Найден обходной путь для этой проблемы.
Меню iView фактически не имеет возможности автоматически определять изменения $ route.Примите, что мы установили наблюдателя для $ router.Думаю, что это не лучшее решение, потому что мы должны обрабатывать изменения маршрута вручную.
Гораздо проще и гибче использовать классы меню iView в компоненте <router-link>
и установить linkActiveClass
и linkExactActiveClass
Свойство router для использования класса iview.
Тогда источник будет выглядеть следующим образом:
Шаблон HTML с <router-link>
компонентом
<nav>
<router-link class="ivu-menu-item" to="/" exact>Root</router-link>
<router-link class="ivu-menu-item" to="/about">About</router-link>
<router-link class="ivu-menu-item" to="/profile">Profile</router-link>
</nav>
И определение маршрутизатора:
const router = new Router({
mode: 'history',
base: process.env.BASE_URL,
linkActiveClass: 'ivu-menu-item-active',
linkExactActiveClass: 'ivu-menu-item-active',
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ './views/About.vue'),
meta: {
requiresAuth: true
}
},
{
path: '/signin',
name: 'signin',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "signin" */ './views/Sign.vue')
}, {
path: '/notfound',
name: 'notfound',
component: Notfound
}
]
})
Результат выглядит как компонент меню iView, но использует функциональность компонента <router-link>
.