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 相关文章推荐
JQuery Tab选项卡效果代码改进版
Apr 01 Javascript
在网页中使用document.write时遭遇的奇怪问题
Aug 24 Javascript
Javascript冒泡排序算法详解
Dec 03 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
Apr 03 Javascript
javascript瀑布流式图片懒加载实例
Jun 28 Javascript
JS实现课堂随机点名和顺序点名
Mar 09 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
layui表格checkbox选择全选样式及功能的实例
Mar 07 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
React学习笔记之高阶组件应用
Jun 02 Javascript
vue+eslint+vscode配置教程
Aug 09 Javascript
Vue2.x-使用防抖以及节流的示例
Mar 02 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
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
python中装饰器级连的使用方法示例
2017/09/29 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
python读取和保存图片5种方法对比
2018/09/12 Python
Django实现网页分页功能
2019/10/31 Python
python 实现二维列表转置
2019/12/02 Python
python读取与处理netcdf数据方式
2020/02/14 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
就业推荐表自我鉴定
2013/10/29 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
离婚协议书的范本
2015/01/27 职场文书
大学运动会通讯稿
2015/07/18 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers