vue-router如何只监指定路由的变化?

对于router一共有两个疑惑:

  1. 如何在组件内只监听指定路由的变化?
  2. active-class在缓存路由的情况下只要已缓存的路由都会被赋予设置的类名

图示
clipboard.png
路由配置代码

{
  path:"",
  component:Index,
  children:[{
    path:"/",
    redirect:"/main/massage",
    component:Main,
    children:[{
      path:"/main/massage",
      name:Massage.name,
      component:Massage,
      meta:{
        title:"首页"
      },
    },{
      path:"/main/chart",
      name:Chart.name,
      component:Chart,
      meta:{
        title:"首页"
      }
    }]
  },{
    path:"/orders",
    name:Orders.name,
    component:Orders,
    meta:{
      title:"销售订单"
    }
  }]
}

目前遇到的主要问题就是一级路由和二级路由active状态的问题,这些路由组件都已缓存,如果设置了 router-link 设置了 active-class="active"那么只要打开过的路由router-link都会被赋予了个active的class,在这个问题没找到解决方案的情况下我又想到另外一种变通的方案,通过 watch 监听
$route的变化来手动控制class类,在二级路由的监听是没什么问题的,但是一级路由设置的监听也会监听到子路由的变化,终于明白监听$route是全局的,只要路由发生了变化都会触发监听,我想这个问题应该也有解决方案吧?
目前的解决方法是,给一级路由和二级路由的meta都设置了一个title,根据title的值和配置一级导航的title值进行比较,一致就激活active,但是这种方式并不是多么高效,实在是没有办法的时候才选择的方案。
求各位大神给小弟解答一下,不胜感激!

阅读 3.3k
1 个回答

过滤一下路由就可以了,比如 一级路由下 只匹配/home 一级路由 如果是/home/item 这个会被过滤
二级路由下一样

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题