keep-alive在element-admin中不生效问题解决

前言

之前做后台管理系统的项目,有大量的表单提交页面,但在实际操作场景中,有些使用者在编辑一个表单时,已经填写了部分信息,在未提交的情况下离开了表单提交页面,再返回时发现刚刚编辑了一半的表单信息被清空了,这个时候就产生了一个需求,在未提交的状态下离开页面,需要保留原数据不被销毁,无疑需要做一个缓存,于是想到了keep-alive。
按正常的流程,在路由中给需要保留缓存的页面一个标识,代码如下:

export default new Router({
  routes: [
    {
      path: '/helloWorld',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/login',
      name: 'Login',
      component: Login
    },
    {
      path: '/',
      name: 'Demo1',
      meta: {
        keepAlive: true // 给需要缓存的页面设置此属性,以此为flag
      },
      component: Demo1
    },
  ]
})

然后在App.vue文件中添加keep-alive标签,做好判断:

<template>
  <div id="app">
    {{$route.meta.keepAlive}}
    <keep-alive>
    	<router-view v-if="$route.meta.keepAlive" /> // 需要缓存的页面
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive" /> // 不需要缓存的页面
  </div>
</template>

<script>
export default {
  name: 'App',

  mounted () {
  }
}
</script>

问题来了,在其他框架里顺风顺水的流程,但是在element-admin中却不起作用了,排查之后,解决方案为将keep-alive的判断标签放入AppMain.vue中,就可以生效了。希望你们在遇到相同问题的时候可以帮到大家。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值