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 相关文章推荐
JavaScript null和undefined区别分析
Oct 14 Javascript
javascript与asp.net(c#)互相调用方法
Dec 13 Javascript
jQuery图片播放8款精美插件分享
Feb 17 Javascript
jquery拖动插件(jquery.drag)使用介绍
Jun 18 Javascript
Javascript中拼接大量字符串的方法
Feb 05 Javascript
JavaScript中诡异的delete操作符
Mar 12 Javascript
js实现透明度渐变效果的方法
Apr 10 Javascript
JavaScript入门教程之引用类型
May 04 Javascript
JavaScript获取用户所在城市及地理位置
Apr 21 Javascript
js打开word文档预览操作示例【不是下载】
May 23 Javascript
17道题让你彻底理解JS中的类型转换
Aug 08 Javascript
解决vue中的无限循环问题
Jul 27 Javascript
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中的array数组类型分析说明
2010/07/27 PHP
写出高质量的PHP程序
2012/02/04 PHP
php字符串截取的简单方法
2013/07/04 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
基本DOM节点操作
2017/01/17 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
Python中为什么要用self探讨
2015/04/14 Python
Python实现抢购IPhone手机
2018/02/07 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
Django实现网页分页功能
2019/10/31 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
浅析python中的del用法
2020/09/02 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
空乘英文求职信
2014/04/13 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
小学生春游活动方案
2014/08/20 职场文书
企业授权委托书范本
2014/09/22 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang