在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 相关文章推荐
用YUI做了个标签浏览效果
Feb 20 Javascript
Flash+XML滚动新闻代码 无图片 附源码下载
Nov 22 Javascript
PHP PDO操作总结
Nov 17 Javascript
jquery实现网站列表切换效果的2种方法
Aug 12 Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 Javascript
ajax的分页查询示例(不刷新页面)
Jan 11 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
Jul 19 Javascript
layui使用templet格式化表格数据的方法
Sep 16 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
May 19 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 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
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
让python 3支持mysqldb的解决方法
2017/02/14 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
python样条插值的实现代码
2018/12/17 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python实现在线翻译
2020/06/18 Python
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
实习鉴定评语
2014/01/19 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python