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 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
Nov 14 Javascript
JavaScript实现twitter puddles算法实例
Dec 06 Javascript
深入理解JS addLoadEvent函数
May 20 Javascript
javaScript给元素添加多个class的简单实现
Jul 20 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
Sep 16 Javascript
js中删除数组中的某一元素实例(无下标时)
Feb 28 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
浅谈FastClick 填坑及源码解析
Mar 02 Javascript
微信小程序实现富文本图片宽度自适应的方法
Jan 20 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
vue 封装 Adminlte3组件的实现
Mar 18 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实现小型站点广告管理
2006/10/09 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php获取字段名示例分享
2014/03/03 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
关于单文件组件.vue的使用
2018/09/20 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
python3中int(整型)的使用教程
2017/03/23 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
django的csrf实现过程详解
2019/07/26 Python
Python用input输入列表的实例代码
2020/02/07 Python
django修改models重建数据库的操作
2020/03/31 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
杠杆的科学教学反思
2014/01/10 职场文书
个人租房协议书范本
2014/09/30 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
java项目构建Gradle的使用教程
2022/03/24 Java/Android