iview Menu组件中动态设置open-names问题
需求:当不点击menu时,路由改变,menu跟着改变,展现形式为高亮以及展开菜单栏。
思路:通过beforeUpdate生命周期函数钩子实现。在页面更新之前改变open-names的值。
```javascript
beforeUpdate() {//更新之前调用的钩子函数
this.openNames = [this.$route.meta.fuName]
this.$nextTick(()=>{//下次渲染时生效
this.$refs.menu.updateOpened()//iview自带方法
})
},
<Menu accordion ref="menu" :active-name="$route.name"
theme="light" width="auto" @on-select="menuNav"
:open-names="openNames" style="height: calc(100vh - 64px);"></Menu>
data() {
return {
openNames:['home']
}
},
如果active-name也不生效,也可以以同样的方式设置
主要是对vue生命周期的一个理解及应用。------- 个人见解
|