Изначально я пытался реализовать этот ответ , но безуспешно.Теперь у меня есть рабочее решение этой проблемы.В моем компоненте навигации у меня есть el-menu
с :router="true" and
: default-active = "activeLink" `.
Поскольку у меня довольно простое приложение Vue, я не хотел циклически перебирать пути маршрутизатора и динамически создавать NavMenu.Это хорошая практика, но я хотел сначала понять, как она работает на базовом уровне.
Из element-ui
документов default-active
контролирует index of currently active menu
.Я добавил activeLink
в качестве свойства данных:
data() {
return {
logo: logo,
activeLink: null,
}
},
, а затем добавил свойство watch
, как описано в приведенной выше сущности:
watch: {
$route (to, from) {
this.activeLink = to.path;
}
},
Часть, которую я пропустил, былачто свойства index
и route
el-menu-item
должны быть одинаковыми.Кроме того, мы можем добавить метод mounted
, чтобы убедиться, что правильная навигационная ссылка активирована независимо от того, с какого пути мы загружаем приложение:
mounted: function(){
this.activeLink = this.$route.path;
},
Это исправило проблему выхода NavMenu изсинхронизировать при использовании кнопок навигации в браузере.