对于router一共有两个疑惑:
- 如何在组件内只监听指定路由的变化?
- active-class在缓存路由的情况下只要已缓存的路由都会被赋予设置的类名
图示
路由配置代码
{
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,但是这种方式并不是多么高效,实在是没有办法的时候才选择的方案。
求各位大神给小弟解答一下,不胜感激!
过滤一下路由就可以了,比如 一级路由下 只匹配/home 一级路由 如果是/home/item 这个会被过滤
二级路由下一样