在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 相关文章推荐
关于恒等于(===)和非恒等于(!==)
Aug 20 Javascript
js实现简单模态窗口,背景灰显
Nov 14 Javascript
jquery中使用ajax获取远程页面信息
Nov 13 Javascript
解析瀑布流布局:JS+绝对定位的实现
May 08 Javascript
javaScript中with函数用法实例分析
Jun 08 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
JavaScript数据结构之二叉树的计数算法示例
Apr 13 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
JS简单实现动态添加HTML标记的方法示例
Apr 08 Javascript
vue给组件传递不同的值方法
Sep 29 Javascript
vue中轮训器的使用
Jan 27 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
Sep 01 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+MySQL5.0中文乱码解决方法
2006/11/20 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
了解JavaScript中let语句
2019/05/30 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
python安装oracle扩展及数据库连接方法
2017/02/21 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
python发送邮件脚本
2018/05/22 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
详解python datetime模块
2020/08/17 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
旅游管理本科生求职信
2013/10/14 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
工作失误检讨书范文
2015/01/26 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
离婚协议书范文2016
2016/03/18 职场文书
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python
浅析JavaScript中的变量提升
2022/06/01 Javascript