vue缓存的keepalive页面刷新数据的方法


Posted in Javascript onApril 23, 2019

用到这个的业务场景是这样的:

a页面点击新建列表按钮进入到新建的页面b,填写b页面并点击b页面确认添加按钮,把这些数据带到a页面,填充到列表(数组),可以添加多条,

点击这条的时候进入到编辑页面,确认修改之后,回退到a页面,a页面需要更新这条数据

实现这个功能的时候,由于是路由页面之间的跳转,首先想到的方案有几个:1. 用sessionStorage本地存储;2. 用路由参数带过去;3. 用兄弟组件传值

由于是添加完之后如果按回退是需要退出整个页面,如果用路由跳转,会出现回退到编辑页面了,所以这个方法首先排除

用本地存储的时候,如果不加回退也会吧之前存的历史记录给带过来,所以最终选用了第三种方法

由于a页面需要缓存,所以用到了路由页面的缓存

router.js

{path: '/a',name: 'a',component: a,meta: {keepAlive: true}},

App.vue

<template>
 <div id="app">
  <keep-alive>
    <router-view v-if="$routemetakeepAlive"></router-view>
  </keep-alive>
  <router-view v-if="!$routemetakeepAlive"></router-view>
 </div>
</template>

由于用到了keepalive, 所以页面在再次加载的时候是不会触发created而是会触发activated的

所以接收数据,重置数据要写到activated方法下

a页面接收

更改用Vue.set()方法

调用方法:Vue.set( target, key, value )

target:要更改的数据源(可以是对象或者数组)

key:要更改的具体数据

value :重新赋的值

activated(){
    let that = this
    Self$on('detailShow',(data)=>{ // 接收
      if(!dataisEdit){ // 是新增还是编辑--这个是在跳转的时候带过去的--新增/编辑页面也会根据这个显示内容有所区别
        thataddParamspush(data)
        thataddParams = Arrayfrom(new Set(thataddParamsSubsidyInfos)) // 为避免重复去个重
      }else{



 // thataddParams[thateditIndex] = data // 刚开始想通过直接修改,后来发现不行,因为页面是有缓存的,显示的还是未修改之前的
        Vueset(thataddParams,thateditIndex,data) // 用set方法修改数据
      }
    })

  },

b页面提交(新增/编辑)

submit(){
    if(!thisdetailValidate()){ // 这个是表单校验,如果不通过不然提交
     return;
    }else{
     Self$emit('detailShow',thisaddParams) // 事件分发
     this$routerback();

    }
   }

vue 缓存的keepalive页面刷新数据的话,这个主要还是用到了Vue.set( target, key, value )方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何使用jQUery获取选中radio对应的值(一句代码)
Jun 03 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
Jan 13 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
May 30 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
Jun 23 Javascript
从0开始学Vue
Oct 27 Javascript
基于javascript实现的快速排序
Dec 02 Javascript
浅谈vuex 闲置状态重置方案
Jan 04 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
在HTML中使用JavaScript的两种方法
Dec 24 Javascript
vue3.0中使用element的完整步骤
Mar 04 Vue.js
Vue 指令实现按钮级别权限管理功能
Apr 23 #Javascript
Vue 之孙组件向爷组件通信的实现
Apr 23 #Javascript
Vue infinite update loop的问题解决
Apr 23 #Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 #Javascript
仿ElementUI实现一个Form表单的实现代码
Apr 23 #Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
Apr 23 #Javascript
vue项目首屏加载时间优化实战
Apr 23 #Javascript
You might like
PHP扩展CURL的用法详解
2014/06/20 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
PHP钩子实现方法解析
2019/05/21 PHP
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python读写unicode文件的方法
2015/07/10 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Pygame的程序开始示例代码
2020/05/07 Python
python中JWT用户认证的实现
2020/05/18 Python
Python 图片处理库exifread详解
2021/02/25 Python
企业行政文员岗位职责
2013/12/03 职场文书
运动会广播稿300字
2014/01/10 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
职业生涯规划书范文
2014/03/10 职场文书
网络编辑求职信
2014/04/30 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
运动会加油稿
2015/07/22 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python