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 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
早该知道的7个JavaScript技巧
Mar 27 Javascript
js实现的四级左侧网站分类菜单实例
May 06 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
May 26 Javascript
关于数据与后端进行交流匹配(点亮星星)
Aug 03 Javascript
ES2015 Symbol 一种绝不重复的值
Dec 25 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
Feb 20 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
Apr 28 Javascript
jQuery实现消息弹出框效果
Dec 10 jQuery
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
JS实现可以用键盘方向键控制的动画
Dec 11 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
简述vue中的config配置
2018/01/23 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
wxPython实现分隔窗口
2019/11/19 Python
Tensorflow 多线程设置方式
2020/02/06 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
好军嫂事迹材料
2014/01/15 职场文书
20年同学聚会感言
2014/02/03 职场文书
幼儿发展评估方案
2014/06/11 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS