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显示用户停留时间的简单实例
Aug 05 Javascript
json字符串之间的相互转换示例代码
Aug 21 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
Jan 12 Javascript
很全面的JavaScript常用功能汇总集合
Jan 22 Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
Aug 02 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
Sep 16 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
Jan 20 Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
Dec 16 Javascript
vuejs 动态添加input框的实例讲解
Aug 24 Javascript
Vue的列表之渲染,排序,过滤详解
Feb 24 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
综合图片计数器
2006/10/09 PHP
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
jQuery实现广告条滚动效果
2017/08/22 jQuery
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
一个简单的python程序实例(通讯录)
2013/11/29 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python for循环与getitem的关系详解
2020/01/02 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
C语言50道问题
2014/10/23 面试题
实习单位推荐信范文
2013/11/27 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
20岁生日感言
2014/01/13 职场文书
学校安全教育制度
2014/01/31 职场文书
安全施工标语
2014/06/07 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
毕业生政审意见范文
2015/06/04 职场文书
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技