vue的menu中点击el-item但是el-submenu不会收回
时间: 2023-08-25 11:26:47 浏览: 119
这个问题可能是因为你没有正确设置 `unique-opened` 属性。`unique-opened` 属性设置为 `true` 后,只有一个子菜单可以打开,当你点击另一个子菜单时,之前打开的子菜单将自动关闭。你可以尝试在 `el-menu` 标签上添加 `unique-opened` 属性,例如:
```html
<el-menu :default-active="activeIndex" class="el-menu-vertical-demo" :unique-opened="true">
<el-submenu index="1">
<template slot="title">
<i class="el-icon-location"></i>
<span>导航一</span>
</template>
<el-menu-item-group>
<template slot="title">分组一</template>
<el-menu-item index="1-1">选项1</el-menu-item>
<el-menu-item index="1-2">选项2</el-menu-item>
</el-menu-item-group>
<el-menu-item-group title="分组2">
<el-menu-item index="1-3">选项3</el-menu-item>
</el-menu-item-group>
<el-submenu index="1-4">
<template slot="title">选项4</template>
<el-menu-item index="1-4-1">选项4-1</el-menu-item>
</el-submenu>
</el-submenu>
<el-menu-item index="2">
<i class="el-icon-menu"></i>
<span slot="title">导航二</span>
</el-menu-item>
<el-menu-item index="3" disabled>
<i class="el-icon-document"></i>
<span slot="title">导航三(无法点击)</span>
</el-menu-item>
<el-menu-item index="4">
<i class="el-icon-setting"></i>
<span slot="title">导航四</span>
</el-menu-item>
</el-menu>
```
如果你已经设置了 `unique-opened` 属性,但是还是无法正常工作,你可以尝试在 `el-menu` 标签上添加 `collapse` 事件的处理函数,以手动关闭子菜单。例如:
```html
<el-menu :default-active="activeIndex" class="el-menu-vertical-demo" :unique-opened="true" @collapse="handleCollapse">
...
</el-menu>
```
```javascript
methods: {
handleCollapse() {
this.$nextTick(() => {
this.$refs.menu.updateOpened();
});
},
}
```
在上面的例子中,我们在 `handleCollapse` 方法中调用 `updateOpened` 方法来手动关闭子菜单。注意,我们使用了 `$nextTick` 方法来确保 DOM 已经更新完毕。
阅读全文