在vue中实现简单页面逆传值的方法


Posted in Javascript onNovember 27, 2017

【需求】

要实现的需求很简单,页面从A -> B,用户在B触发操作,将一些数据带回到A页面,在网上找了好久也只看到有人问,但总找不到很好答案。要实现的效果图如下:

在vue中实现简单页面逆传值的方法

【联想】

在 ios 开发中,页面跳转 A -> B -> C,到 C 页面后,内存中一直存储着 A 和 B 页面的数据和状态,通过导航堆栈遍历数组可以拿到之前的页面进行修改赋值等,另外还有代理,block传值等操作。

vue是一个单页应用,轻量,并且不会重复下载数据。当它从一个页面跳转到另一个页面时,原来的页面的vue实例和相关数据已经销毁了,要实现逆传值就要找到操作的对象及它的一些属性。

【尝试】

在 three 页面中打印路由相关信息,如下:

在vue中实现简单页面逆传值的方法

本来是想在其对象中查看是否有可操作的对象,但发现都不好操作甚至太麻烦,并不像 ios 中一样。然后尝试对其中一些对象 prototype 或 __proto__ 主动添加想要存储的数据,实际结果也是要么报错不通过,要么路由切换时数据就没了。

这两天又重新看了看vue的官网指导,发现除了全局路由有对应的时机方法,对于组件路由也有几个对应的钩子函数。

在第三个页面中实现 beforeRouteLeave,打印对应的参数发现确实可以拿到前后路由。如下:

在vue中实现简单页面逆传值的方法

【相关代码】

/three 页面中的 input 与变量 selVal 绑定,然后在此页面的路由方法中,判断如果是回第二个页面,则将要传的参数赋值到对应query 或 params中,params 中的数值如果用户刷新当前页面参数值会丢失,而query则是拼接在 url 后面,刷新页面值也不会丢失。如下:

beforeRouteLeave(to, from, next) {
  if (to.name == 'Two') {
   to.query.temp = this.selVal;
  }
  next();
 }

在 /two 页面的 mounted 方法中获取相应的值

mounted() {
  if (this.$route.query.temp) {
   this.temp = this.$route.query.temp;
  }
 }

这样就完了,真想说句靠,怎么原来就没发现呢,之前实现这些还想着 keepalive 或使用 vuex 等等,想想那样麻烦多了。

ps: 这种简单的逆传值是这样实现没错,但如果 /two 页面在进入 /three 页面之前用户进行了大量临时性操作,到 /three 页页回来还需要继续保持这些大量的操作就比较困难了,这个就等下期博客贴出来了。

总结

以上所述是小编给大家介绍的在vue中实现简单页面逆传值的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery常用技巧及常用方法列表集合
Apr 06 Javascript
javascript各浏览器中option元素的表现差异
Apr 07 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
Oct 31 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
Jan 06 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
原生JS实现美图瀑布流布局赏析
Sep 07 Javascript
jQuery数据类型小结(14个)
Jan 08 Javascript
js实现登录验证码
Dec 22 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
May 09 Javascript
浅析Vue自定义组件的v-model
Nov 26 #Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
Nov 26 #Javascript
Javacript中自定义的map.js  的方法
Nov 26 #Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 #Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 #Javascript
微信小程序wx.request实现后台数据交互功能分析
Nov 25 #Javascript
利用JavaScript的%做隔行换色的实例
Nov 25 #Javascript
You might like
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
python如何把字符串类型list转换成list
2020/02/18 Python
耐克亚太地区:Nike APAC
2019/12/07 全球购物
教师岗位聘任书范文
2014/03/29 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
学生检讨书怎么写
2014/10/09 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书