vue 缓存的keepalive页面刷新数据
用到这个的业务场景是这样的:
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="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></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(!data.isEdit){ // 是新增还是编辑--这个是在跳转的时候带过去的--新增/编辑页面也会根据这个显示内容有所区别
               that.addParams.push(data)
               that.addParams = Array.from(new Set(that.addParams.SubsidyInfos)) // 为避免重复去个重
            }else{
         // that.addParams[that.editIndex] = data // 刚开始想通过直接修改,后来发现不行,因为页面是有缓存的,显示的还是未修改之前的
                Vue.set(that.addParams,that.editIndex,data) // 用set方法修改数据
            }
        })
    },
b页面提交(新增/编辑)
submit(){
        if(!this.detailValidate()){ // 这个是表单校验,如果不通过不然提交
          return;
        }else{
          Self.$emit('detailShow',this.addParams) // 事件分发
          this.$router.back();
        }
      }
vue 缓存的keepalive页面刷新数据的话,这个主要还是用到了Vue.set( target, key, value )方法
vue 缓存的keepalive页面刷新数据的更多相关文章
- VUE 路由参数改变重新刷新数据
		
VUE 路由参数改变重新刷新数据 App.vue 里面使用路由,然后通过App.vue文件中的搜索功能搜索刷新路由文件中的列表. 修改 index.js 文件 首先在路由文件 index.js 文件中 ...
 - vue 在nginx下页面刷新出现404问题解决和在nginx下页面加载了js但是页面显示空白问题解决
		
一.vue 在nginx下页面刷新出现404 在网上翻遍了所有这样问题的解决办法,全都是一个解决办法也是正确的解决办法,(后来在vue官网上关于history方式出现404解决方法也是这样说的),只是 ...
 - vue缓存之keep-alive,设置想要缓存的页面
		
由于项目需求从a页面跳转到b页面,返回a页面,a页面数据不能被刷新掉,方法很多列举12 方法1 a页面通过学期按钮切换学期,该学期里more进入b页面,返回a页面,返回回到对应a页面进入的高亮按钮设置 ...
 - 2、vuex页面刷新数据不保留,解决方法(转)
		
今天这个问题又跟页面的刷新有一定的关系,虽然说跟页面刷新的关系不大,但确实页面刷新引起的这一个问题. 场景: VueX里存储了 this.$store.state.PV这样一个变量,这个变量是在app ...
 - vue路由传参的三种方式以及解决vue路由传参页面刷新参数丢失问题
		
最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$r ...
 - vue路由传参页面刷新参数丢失问题解决方案
		
最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$r ...
 - VUE缓存:keep-alive
		
VUE缓存:动态keep-alive:https://www.jianshu.com/p/11f7dbc07ad3 keep-alive include和exclude无效问题:https://blo ...
 - vue项目,子页面刷新404问题
		
翻车事故分析: 因需对项目整体优化,调整过程,采用了路由的history模式,本地项目运行,刷新子页面都是OK的. 部署到测试服务器,正常跳转都ok,但刷新子页面就会出现404,请求变成了get,没有 ...
 - vue通过路由实现页面刷新
		
vue 开发微信商城项目,需求如下: 购物车页面跳转到详情页,购物车页面包含了多个组件,点击结算跳转到订单页面,从订单返回时,购物车页面没有刷新,由于购物车组件之间通过bus实现事件传递,页面跳转(非 ...
 
随机推荐
- 关于Jsp中的三种弹框
			
对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3:一个带输入的对话框,可以返回用户填入的字 ...
 - Ubuntu 12.04 root用户登录设置
			
Ubuntu 12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录.以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端 ...
 - error: expected declaration specifiers or '...' before 'xxxx'(xxxx是函数形参)
			
今天汗颜了一大阵 早上,在编译我的源代码的时候竟然不通过编译,上个星期六也出现了这种情况,当时不知道怎么弄的后来又通过编译了,可能是原来的.o文件没有make clean 还保存在那里,以至于蒙过去了 ...
 - javascript -- 判断是否为某个数据类型
			
为何不用其他方法,因为下面的写法考虑了各种兼容性.判断是否为数组isArray = function (source) { return '[object Array]' == Object.p ...
 - mysql -- 循环插入数据到表中
			
备忘: 1.经搜索发现,MySql不支持直接写SQL语句实现循环插入功能. 想要实现该功能,可以用其他语言操控MySql来实现,或者用存储过程来实现(Store Procedure--SP). 2 ...
 - hunnu--11547--你的组合数学学得怎样?
			
你的组合数学学得怎样? Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: ...
 - MVC中用View.bag保存json字符串。在js中使用,不用ajax请求。。。。
			
有时候我们只需要使用一次json数据,这时候直接在后台查出json,然后用view.bag传到前台使用,就会很方便..(在前台用ajax请求的话,感觉有点多余..) 上代码 后台: public Ac ...
 - ef中用lambda expressions时要注意(m=>m.id ==b ) 此时的b只能是基本的数据类型 。连属性都不能用
			
ef中用lambda expressions时要注意(m=>m.id ==b ) 此时的b只能是基本的数据类型 .连属性都不能用
 - 加L“”
			
error C2665: “AfxMessageBox”: 2 个重载中没有一个可以转换所有参数类型 初学.net,编写如下代码运行,竟然提示错误(error C2665: “AfxMessageBo ...
 - c++ 类数据成员的定义、声明
			
C++为类中提供类成员的初始化列表类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算 1.类里面的任何成员变量在定义时是不 ...