vue element在动态菜单中 双击某一个菜单 在菜单旁边 出现一个 编辑的选择框
时间: 2024-02-23 09:59:24 浏览: 126
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
实现这个功能,可以使用 Element UI 中的 `el-popover` 组件。具体实现步骤如下:
1. 在菜单项上添加 `@dblclick` 事件处理程序,用来触发弹出框的显示。
2. 在 `@dblclick` 事件处理程序中,通过 `this.$refs.popover.show()` 方法来显示 `el-popover` 组件。
3. 在 `el-popover` 组件中,使用 `el-form` 组件来实现编辑表单,并添加保存和取消按钮。
4. 在保存按钮的点击事件中,触发保存操作,并通过 `this.$refs.popover.hide()` 方法来隐藏 `el-popover` 组件。
以下是示例代码:
```vue
<template>
<div>
<el-menu :default-active="activeIndex" class="el-menu-vertical-demo" @select="handleMenuSelect">
<el-submenu v-for="item in menuList" :key="item.id" :index="item.id">
<template slot="title">
<i :class="item.icon"></i>
<span>{{ item.name }}</span>
</template>
<el-menu-item v-for="subItem in item.subMenu" :key="subItem.id" :index="subItem.id" @dblclick="handleMenuItemDoubleClick">
<i :class="subItem.icon"></i>
<span>{{ subItem.name }}</span>
</el-menu-item>
</el-submenu>
</el-menu>
<el-popover ref="popover" placement="right" width="300">
<el-form>
<el-form-item label="菜单名称">
<el-input v-model="editMenu.name"></el-input>
</el-form-item>
<el-form-item label="菜单图标">
<el-input v-model="editMenu.icon"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSave">保存</el-button>
<el-button @click="handleCancel">取消</el-button>
</el-form-item>
</el-form>
<span slot="reference"></span>
</el-popover>
</div>
</template>
<script>
export default {
data() {
return {
activeIndex: '1',
menuList: [
{
id: '1',
name: '菜单1',
icon: 'el-icon-menu',
subMenu: [
{
id: '1-1',
name: '子菜单1-1',
icon: 'el-icon-menu',
},
{
id: '1-2',
name: '子菜单1-2',
icon: 'el-icon-menu',
},
],
},
{
id: '2',
name: '菜单2',
icon: 'el-icon-menu',
subMenu: [
{
id: '2-1',
name: '子菜单2-1',
icon: 'el-icon-menu',
},
{
id: '2-2',
name: '子菜单2-2',
icon: 'el-icon-menu',
},
],
},
],
editMenu: {
name: '',
icon: '',
},
};
},
methods: {
handleMenuSelect(index) {
this.activeIndex = index;
},
handleMenuItemDoubleClick() {
this.$refs.popover.show();
// 初始化编辑菜单数据
this.editMenu = {
name: '',
icon: '',
};
},
handleSave() {
// 处理保存操作
console.log('保存', this.editMenu);
this.$refs.popover.hide();
},
handleCancel() {
// 处理取消操作
console.log('取消');
this.$refs.popover.hide();
},
},
};
</script>
```
阅读全文