Vue 编程之路(二)——跳转页面传值
最近公司的一个项目中使用 Vue 2.0 + element UI 实现一个后台管理系统的前端部分,属于商城类型。其中我负责的部分有一项需要跳转页面,由于跳转前的页面是多个组件构成的,所以在跳转页面的时候,并不适合用传统的 href,于是使用路由进行传值。在这里分享一下开发的过程。
如何引入路由,可查看官方文档:https://router.vuejs.org/zh/installation.html,也可自行搜索。
一、我采用的实现方法

图 1 - 1 跳转前的页面.png
给每一行的按钮绑定点击事件,并将每一行的数据携带上。

图 1 - 2 按钮的点击事件.png

图 1 - 3 跳转前的页面所对应的响应事件.png
其中 path 所对应的 '/order/orderDetails' 我已经在 src/router/index.js 中注册声明,如下图:

图 1 - 4 在 src/router/index.js 中注册声明.png
点击“订单详情”按钮后,页面跳转,此时的 URL 为:

图 1 - 5 URL.png
可以看到,这边是把需要的参数写入 URL 了,然后在接收页接收数据:

图 1 - 6 接收页接收数据.png
此时刷新页面,数据依然存在,因为 URL 没有改变,接收页直接从 URL 截取参数去接口中拿数据,故刷新页面不会影响接收页的数据。
二、介绍一下先前采用的方法
拿着整个订单对象用路由传,实际上能传成功,但是会在刷新页面后拿不到数据,观察 URL 发现显示的是 Object ,可能是刷新后解析问题导致拿不到数据。
具体的采用可参照官方文档:https://router.vuejs.org/zh/guide/essentials/navigation.html,我当时也是照着文档写的,获取参数可以用 this.$route.query。
三、其他方法
其实跳转页面传值的方法有很多,就我所听过的就还有以下方法,不过我没有实验过,有兴趣的可以自行尝试:
1、使用 router-link 也会在刷新页面后丢失数据
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
2、通过 $parent, $chlidren 等方法调取用层级关系的组件内的数据和方法
通过下面的方法调用,虽然用起来比较灵活,但是容易造成代码耦合性高,导致后期维护困难。
this.$parent.$data.id // 获取父元素data中的id
this.$children.$data.id // 获取父元素data中的id
3、通过 eventBus 传递数据
使用前可以在全局定义一个 eventBus
window.eventBus = new Vue();
在需要传递参数的组件中,定义一个 emit 发送需要传递的值,键名可以自己定义(可以为对象)
eventBus.$emit('eventBusName', id);
在需要接受参数的组件重,用 on 接受该值(或对象)
eventBus.$on('eventBusName', function(val) {<br> console.log(val)<br>})
最后记住要在 beforeDestroy() 中关闭这个 eventBus
eventBus.$off('eventBusName');
4、借道 sessionStorage / localStorage
localStorage与sessionStorage存储的必需是字符串,而获取的交互数据是Object,所以我们一般要把JSON格式的字符串转成字符。
JSON.stringify(); // 将Json对象转为字符串。 JSON.parse(); // 将字符串转为json格式。
Vue 编程之路(二)——跳转页面传值的更多相关文章
- Vue 编程之路(三)—— Vue 中子组件在父组件的 v-for 循环里,父组件如何调取子组件的事件
(标题的解决方案在第二部分) 最近公司的一个项目中使用 Vue 2.0 + element UI 实现一个后台管理系统的前端部分,属于商城类型. 一.前期思路: 其中在“所有订单”页面,UI 给的设计 ...
- jquery 跳转页面传值的问题
关于 跳转页面传值的问题 1. 目前最多的是使用 ajax 方法 //举例 ajax 传值,举例: $.ajax({ type : "post", url : "save ...
- Vue移动端焦点状态跳转页面,焦点和键盘不消失的问题
问题:input搜索,在移动端焦点状态跳转页面,焦点不失焦,还在跳转后的页面闪烁,且键盘不消失 //主动隐藏键盘 document.getElementById('inputSearch').blur ...
- Web端 页面跳转 页面传值
要把 Default.aspx 页面 TextBox1中的值 传值到 Default.aspx Label上去 C#服务端跳转页面 Response 响应请求对象 Redi ...
- vue路由传参并跳转页面
在vue项目中参数的传递可以使用本地缓存或者Vuex,那么vue能不能像小程序一样路由传参呢,显然是可以的而且非常简单 方式一:query传参 //传参 go(){ that.$router.push ...
- Vue 编程之路(一)——父子组件之间的数据传递
最近公司的一个项目中使用 Vue 2.0 + element UI 实现一个后台管理系统的前端部分,属于商城类型.其中部分页面是数据管理页,所以有很多可以复用的表格,故引入自定义组件.在这里分享一下开 ...
- vue跳转页面传值怎么传?
这是路由跳转: this.$router.push( { name: 'holderResult', params: { meetingId:self.$route.params.meetingId} ...
- vue动态添加路由,跳转页面时,页面报错路由重复:vue-router.esm.js?8c4f:16 [vue-router] Duplicate named routes definition: { name: "Login", path: "/login" }
之前用了一个vue-element-admin做了一个小项目,里面用到了动态添加路由,动态展示侧边栏, 当我切换页面时,控制台总是警告提示路由重复,连续跳转几次页面后,控制台就被这些警告占满了, 于是 ...
- vue tab栏缓存解决跳转页面后返回的状态保持
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
随机推荐
- java序列化报错
Main.javat mainsr &java.util.Collections$UnmodifiableList�%1�� L listq ~xr ,java.util.Collection ...
- PAT——1011. A+B和C
给定区间[-231, 231]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1行给出正整数T(<=10),是测试用例的个数.随后给出T组测试用例,每组占一行,顺序给出A.B ...
- Java参数传递对象引用传递失效
产线问题排查,方法传递对象引用但返回后对象一直为空 原因: null作为参数传递的时候,就不是引用传参了 Java参数引用传递之例外:null 众所周知的是,java中除基本类型外,参数都是引用传递. ...
- OSD仿真_MFC程序01
Windows系统具有强大的绘图功能,可以用来模拟OSD显示.接下来将设计一个简单的模拟显示终端的程序,用于后续显示功能和菜单系统的开发.说明一下,对于Windows下的MFC编程我不怎么了解,只知道 ...
- IOS中Hybird实现
现在Hybird这块,网上也有很多文章,最近研究了下,分享给大家. 什么是Hybird技术? 1.一般是指WebView和Native技术混合而成的一套技术方案 2.也可以理解成,非Native技术与 ...
- wireshark利用正则表达式过滤http协议中的jpg png zip等无用的数据包
主要工具:小度随身wifi热点 + wireshark抓包工具.(强烈不建议使用360的产品,非常垃圾,而且干扰代理#墙IP,搞得你不能***) 利用wireshark这个强大的协议分析利器.去分析某 ...
- mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等
mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等 在mysql的使用过程中,有时候会出现对时间进行的操作,比如时间向前向后滚动,求2个时间的间隔,或者切换时区的操作 1,时间向前滚动( ...
- redis安装make失败,make[1]: *** [adlist.o] Error 127....
解压后 执行make后报错: cd src && make all make[1]: Entering directory `/home/liuchaofan/redis-3.0.7/ ...
- JavaScript手绘风格的图形库RoughJS使用指南
RoughJS是一个轻量级的JavaScript图形库(压缩后约9KB),可以让你在网页上绘制素描风格.手绘样式般的图形.RoughJS定义了绘制直线,曲线,圆弧,多边形,圆和椭圆的图元,同时它还支持 ...
- [转]MySQL常用字符串函数
本文转载自:http://www.cnblogs.com/geaozhang/ 是最常用的的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现相应的应用: 1.LOWER(column|str ...