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 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
学习jquery必备 api中英文对照的chm手册 下载
May 03 Javascript
一个简单的JavaScript 日期计算算法
Sep 11 Javascript
Javascript 圆角div的实现代码
Oct 15 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
Jan 04 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
Apr 28 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
Jun 29 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
Sep 28 Javascript
css配合JavaScript实现tab标签切换效果
Oct 11 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
Feb 16 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
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
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
强制PHP命令行脚本单进程运行的方法
2014/04/15 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
功能强大的php文件上传类
2016/08/29 PHP
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
artDialog+plupload实现多文件上传
2016/07/19 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python实现队列的方法
2015/05/26 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
pandas-resample按时间聚合实例
2019/12/27 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
节约电力资源的建议书
2014/03/12 职场文书
中药学自荐信
2014/06/15 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
Python基于Opencv识别两张相似图片
2021/04/25 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python