时间:2021-05-26
用到这个的业务场景是这样的:
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
由于用到了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 )方法
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在我们修改过页面的某些数据后,通过想要把页面刷新一下,看看修改后的结果。由于vue的存在,页面是不会自动刷新的,需要我们手动进行操作。在vue里有三种刷新方法,
vue+webpack项目中数据更新后页面没有刷新问题,ie11下,如果GET请求请求相同的URL,默认会使用之前请求来的缓存数据,而不会去请求接口获取最新数据
环境vue项目,页面有搜索、筛选项等。需求页面跳转,切换或者刷新,希望可以记住用户在页面的筛选状态方案v1vue有提供一种缓存组件的解决方案—keep-aliv
版权1、外层包围keep-alive作用将组件实例缓存下来2、清除组件缓存使用keep-alive的exclude="组件名"属性补充知识:vue简单的页面刷新
在router入口页面加上keepAlive:true//需要被缓存false则不需要{path:'fundProListG',component:resolv