vue 怎么处理当this.$router.go(-1)时,判断返回指定页面设置指定页面的keepAlive为true?

已知有页面A,此页面有多个页面可以路由跳转过来,如:B,C,D页面。页面A中有一个点击事件goIndex用于返回上一页面。怎么在A页面中处理判断当返回页面为B时,将B页面的$route.meta.keepAlive设为true?
A页面代码如下:

//返回上一页。
 goIndex(){
    this.$router.go(-1);
}

因为B页面也有多个入口,可能从A页面返回,也可能从H页面路由跳转。所以不能直接在路由的index.js里设置成 meta: {keepAlive: true}。

所以,怎么在A页面处理当返回B页面时,设置B页面的路由的keepAlive设为true ?

阅读 8.1k
3 个回答

我觉得可以这样写,B页面入口很多,但是B页面知道是哪个页面过来的
所以可以在B页面的钩子里面:

 beforeRouteEnter (to, from, next) {
      next(vm => {
          if (from.path === '/A') {
              ...
              vm<=>this
          }
      })
    }
  
<template>
    <div style="height:100%">
    <!-- 被缓存的视图组件 -->
      <keep-alive>
        <router-view v-if="$route.meta.keepAlive">
        </router-view>
      </keep-alive>
      <router-view v-if="!$route.meta.keepAlive"></router-view>
    </div>
</template>

//route.js
{
  path:"",
  name:"",
  component:A,
  meta: {
    keepAlive: false // 不需要被缓存
  }
}

{
  path:"",
  name:"",
  component:B,
  meta: {
    keepAlive: true // 需要被缓存
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏