在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 相关文章推荐
use jscript with List Proxy Server Information
Jun 11 Javascript
关于JavaScript的with 语句的使用方法
May 09 Javascript
中国地区三级联动下拉菜单效果分析
Nov 15 Javascript
javascript生成json数据简单示例分享
Feb 14 Javascript
JS判断是否360安全浏览器极速内核的方法
Jan 29 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
JS获取图片高度宽度的方法分享
Apr 17 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
微信小程序 监听手势滑动切换页面实例详解
Jun 15 Javascript
vue cli 3.0 使用全过程解析
Jun 14 Javascript
JS实现可针对算术表达式求值的计算器功能示例
Sep 04 Javascript
浅谈React Event实现原理
Sep 20 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
php通过COM类调用组件的实现代码
2012/01/11 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
jquery实现控制表格行高亮实例
2013/06/05 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
js实现移动端轮播图
2020/12/21 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
Python中的推导式使用详解
2015/06/03 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
python pygame实现2048游戏
2018/11/20 Python
python简单贪吃蛇开发
2019/01/28 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Python中的Cookie模块如何使用
2020/06/04 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
成功的餐厅经营创业计划书
2014/01/15 职场文书
学习普通话的体会
2014/11/07 职场文书
windows安装python超详细图文教程
2021/05/21 Python
小程序实现文字循环滚动动画
2021/06/14 Javascript
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers