那多个el-submenu 关闭问题
时间: 2023-10-02 14:14:11 浏览: 79
如果你想同时关闭多个 `el-submenu`,可以使用 `v-for` 循环遍历 `el-submenu`,并为每个 `el-submenu` 绑定一个 `ref`,然后在代码中通过 `this.$refs` 访问它们并关闭它们。以下是一个示例代码:
```
<template>
<el-menu>
<el-submenu v-for="(item, index) in menuList" :key="index" :ref="'submenu' + index" :index="'submenu' + index" :popper-append-to-body="false">
<template slot="title">{{ item.title }}</template>
<el-menu-item v-for="(subItem, subIndex) in item.subMenu" :key="subIndex" :index="'submenu' + index + '-menu' + subIndex">{{ subItem }}</el-menu-item>
</el-submenu>
</el-menu>
</template>
<script>
export default {
data() {
return {
menuList: [
{
title: '菜单1',
subMenu: ['子菜单1', '子菜单2']
},
{
title: '菜单2',
subMenu: ['子菜单3', '子菜单4']
}
]
}
},
methods: {
closeAllSubmenu() {
for (let i = 0; i < this.menuList.length; i++) {
this.$refs['submenu' + i][0].collapse();
}
}
}
}
</script>
```
在上面的示例代码中,我们使用 `v-for` 循环遍历 `menuList` 生成 `el-submenu`,并为每个 `el-submenu` 绑定一个 `ref`,例如 `ref="'submenu' + index"`。然后,在 `closeAllSubmenu` 方法中,我们使用 `for` 循环遍历 `menuList`,并通过 `this.$refs['submenu' + i][0].collapse()` 访问每个 `el-submenu` 的 `$refs` 并调用 `collapse()` 方法来关闭它们。最后,你可以在需要关闭所有 `el-submenu` 的地方调用 `closeAllSubmenu` 方法即可。
阅读全文