elementui中NavMenu导航菜单设置多个选中
时间: 2024-09-13 08:18:41 浏览: 49
Element-Ui组件 NavMenu 导航菜单的具体使用
3星 · 编辑精心推荐
Element UI中的NavMenu导航菜单组件默认情况下是单选的,也就是说一次只能选中一个菜单项。如果你需要实现多个菜单项同时选中的功能,你将需要进行一些自定义的处理。
以下是实现Element UI中NavMenu导航菜单多选的一个方法:
1. 使用`el-menu`组件并设置`unique-opened`属性为`false`。这个属性默认为`true`,表示子菜单在点击后会关闭其他已打开的子菜单,设置为`false`后可以使得多个子菜单保持打开状态。
2. 利用`el-menu-item`的`index`属性。这个属性可以用来标识每个菜单项,可以用来跟踪每个菜单项的选中状态。
3. 使用`v-model`双向绑定数据模型到菜单选中项。由于`el-menu`组件本身不支持多选,你需要自己维护一个选中项数组,当菜单项被点击时,根据当前的选中状态决定是添加还是移除该菜单项的`index`。
下面是一个简单的示例代码:
```vue
<template>
<el-menu :default-active="defaultActive" class="el-menu-vertical-demo" :unique-opened="false" @select="handleSelect">
<el-menu-item index="1">
<i class="el-icon-location"></i>
<span slot="title">导航一</span>
</el-menu-item>
<el-menu-item index="2">
<i class="el-icon-menu"></i>
<span slot="title">导航二</span>
</el-menu-item>
<el-menu-item index="3">
<i class="el-icon-document"></i>
<span slot="title">导航三</span>
</el-menu-item>
</el-menu>
</template>
<script>
export default {
data() {
return {
defaultActive: '1', // 默认选中项
selectedMenus: [] // 存储选中项的index
};
},
methods: {
handleSelect(key, keyPath) {
const menuIndex = keyPath[0]; // 获取被选中的菜单项index
const index = this.selectedMenus.indexOf(menuIndex);
// 如果已经选中,则移除,否则添加
if (index > -1) {
this.selectedMenus.splice(index, 1);
} else {
this.selectedMenus.push(menuIndex);
}
}
}
};
</script>
```
在这段代码中,我们设置了一个名为`selectedMenus`的数组来跟踪当前选中的菜单项。每当菜单项被选中时,`handleSelect`方法会被触发,根据当前的选中状态,将菜单项的`index`添加到数组中或从数组中移除。
阅读全文