iView Menu菜单的activeName不生效怎么办?
我在用 iView 的 Menu 组件做侧边栏导航,想通过 activeName 控制当前激活的菜单项,但不管怎么改值,高亮始终不更新。我确认数据是响应式的,也试过 this.$nextTick,还是不行。
这是我的部分代码:
data() {
return {
activeMenu: 'home'
}
},
methods: {
handleSelect(name) {
this.activeMenu = name;
console.log('current:', this.activeMenu); // 能正常输出
}
}
模板里绑定了 :active-name=”activeMenu”,但页面上就是不显示高亮,难道还要手动刷新?
先检查一下你的 MenuItem 的 name 属性值类型:
如果你的 MenuItem 是这样写的:
而 activeMenu 是字符串 'home',那肯定对不上。Menu 组件的 activeName 比对是严格相等的,类型不一致就不行。
解决办法:统一成字符串
或者两边都统一用数字:
还有一种可能:你在 Sider 里面用的是 Submenu
如果是嵌套菜单,记得给 Submenu 同样设置 name,然后用 active-sub-name 来控制:
然后绑定:
你先把 MenuItem 的 name 打印出来看看,确认类型是否一致,大概率就是这个问题。