在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 相关文章推荐
学习ExtJS table布局
Oct 08 Javascript
判断iframe是否加载完成的完美方法
Jan 07 Javascript
JS修改css样式style浅谈
May 06 Javascript
javascript解决innerText浏览器兼容问题思路代码
May 17 Javascript
js中浮点型运算BUG的解决方法说明
Jan 06 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 Javascript
jQuery 计算iframe 窗口大小的方法
May 13 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
May 30 Javascript
node网页分段渲染详解
Sep 05 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
Nov 23 Javascript
vue改变循环遍历后的数据实例
Nov 07 Javascript
JS+Canvas实现五子棋游戏
Aug 26 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 一元分词算法
2009/11/30 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
Python中的zip函数使用示例
2015/01/29 Python
Python numpy 点数组去重的实例
2018/04/18 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
Django中使用Celery的方法示例
2018/11/29 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Django密码存储策略分析
2020/01/09 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
Python实现简单的2048小游戏
2021/03/01 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
什么是规则表达式
2012/05/03 面试题
农场厂长岗位职责
2013/12/28 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
股票投资建议书
2014/05/19 职场文书
读书月活动方案
2014/05/22 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
安全生产协议书
2016/03/22 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
MySQL创建管理HASH分区
2022/04/13 MySQL
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js