在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中获取id值方法小结
Sep 22 Javascript
jQuery处理xml格式的返回数据(实例解析)
Nov 28 Javascript
举例讲解Node.js中的Writable对象
Jul 29 Javascript
JS中innerHTML和pasteHTML的区别实例分析
Jun 22 Javascript
js正则表达式验证密码强度【推荐】
Mar 03 Javascript
jQuery EasyUI开发技巧总结
Sep 26 jQuery
Vue 父子组件的数据传递、修改和更新方法
Mar 01 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
May 02 Javascript
js中null与空字符串""的区别讲解
Jan 17 Javascript
jqGrid表格底部汇总、合计行footerrow处理
Aug 21 Javascript
基于Vue CSR的微前端实现方案实践
May 27 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
Jan 13 Vue.js
浅析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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
php 数组的一个悲剧?
2011/05/11 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
selenium+python自动化测试之多窗口切换
2019/01/23 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
仓库组长岗位职责
2014/01/29 职场文书
教师申诉制度
2014/01/29 职场文书
大学生先进事迹材料
2014/02/16 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
canvas绘制折线路径动画实现
2021/05/12 Javascript
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
Pygame Rect区域位置的使用(图文)
2021/11/17 Python