ElementUI是一款基于Vue.js 2.0的UI组件库,它提供了丰富的UI组件,其中包括右键菜单组件。本文将从多个方面对ElementUI右键菜单进行详细阐述。包括:elementui右键菜单栏拓展, elementui菜单导航, elementui tree右键菜单, elementui菜单权限, elementui单选选项卡, elementui动态菜单, elementui单选按钮, elementui路由菜单, elementui表格右键菜单。
一、elementui右键菜单栏拓展
ElementUI右键菜单栏拓展组件为基本右键菜单,可以在页面元素中添加右键菜单,例如在图片上右键弹出保存图片的选项。下面是一个简单的示例:
<template> <div class="demo"> <p on-contextmenu="handleContextmenu">右键点击我</p> <el-context-menu :model="menu" :ref="menuRef"> <el-menu-item>编辑</el-menu-item> <el-menu-item divided>删除</el-menu-item> <el-menu-item divided disabled>停用</el-menu-item> </el-context-menu> </div> </template> <script> export default { data() { return { menu: [ { label: '编辑', command: () => { console.log('点击了编辑') } }, { label: '删除', command: () => { console.log('点击了删除') } }, { label: '停用', disabled: true } ], menuRef: 'menu' } }, methods: { handleContextmenu(e) { e.preventDefault() this.$refs.menu.show(e.clientX, e.clientY) } } } </script>
上述代码中,使用了el-context-menu
组件,该组件被赋予了一个model
属性,可以根据model属性渲染菜单内容。同时,代码还设置了command
,当点击菜单项时会触发该事件。
二、elementui菜单导航
ElementUI菜单导航组件可用于创建侧边栏导航菜单,可以实现菜单的展开和折叠。下面是一个简单的示例:
<template> <el-menu :default-active="activeIndex" mode="vertical" @select="handleSelect"> <el-submenu index="1"> <template slot="title"> <i class="el-icon-location"></i> <span>导航一</span> </template> <el-menu-item-group title="分组一"> <el-menu-item index="1-1">选项一</el-menu-item> <el-menu-item index="1-2">选项二</el-menu-item> </el-menu-item-group> <el-menu-item-group title="分组二"> <el-menu-item index="1-3">选项三</el-menu-item> </el-menu-item-group> <el-submenu index="1-4"> <template slot="title">选项四</template> <el-menu-item index="1-4-1">选项五</el-menu-item> <el-menu-item index="1-4-2">选项六</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"> <i class="el-icon-setting"></i> <span slot="title">导航三</span> </el-menu-item> </el-menu> </template> <script> export default { data() { return { activeIndex: '1-1' } }, methods: { handleSelect(index) { this.activeIndex = index } } } </script>
上述代码中,使用了el-menu
以及相关的子组件el-menu-item
和el-submenu
。同时,也设置了default-active
属性来指定默认选中的菜单项,以及@select
事件回调函数来处理菜单选项的选择事件。
三、elementui tree右键菜单
Tree组件是ElementUI中展示树状结构的组件,而Tree右键菜单组件则可以为Tree组件添加右键菜单功能。下面是一个简单的示例:
<template> <el-tree :data="data" :expand-on-click-node="false" @node-contextmenu="handleContextmenu"> <span class="custom-tree-node" slot-scope="{ node, data }">{{ node.label }} <el-context-menu :model="menu" :ref="menuRef"></el-context-menu> </el-tree> </template> <script> export default { data() { return { data: [{ label: '一级 1', children: [{ label: '二级 1-1', children: [{ label: '三级 1-1-1' }] }] }], menu: [ { label: '新增节点', command: () => { console.log('点击了新增节点') } }, { label: '删除节点', command: () => { console.log('点击了删除节点') } } ], menuRef: 'menu' } }, methods: { handleContextmenu(e, { node, data }) { e.preventDefault() this.$refs.menu.show(e.clientX, e.clientY) } } } </script>
上述代码中,使用了el-tree
组件以及相关的子组件el-context-menu
。在el-tree
组件上方设置了自定义的右键菜单组件,并且在@node-contextmenu
事件回调函数中显示了该菜单组件。此外,代码中还设置了command
属性,当点击菜单项时触发该事件。
四、elementui菜单权限
ElementUI菜单权限使得菜单可以动态地展现和隐藏,根据用户的权限动态控制菜单显示。下面是一个简单的示例:
<template> <el-menu :default-active="activeIndex" mode="horizontal"> <el-menu-item index="home">首页</el-menu-item> <el-submenu index="customer"> <template slot="title"> <i class="el-icon-menu" /> <span>客户管理</span> </template> <el-menu-item index="customer_list">客户列表</el-menu-item> <el-menu-item index="customer_add">新增客户</el-menu-item> </el-submenu> <el-submenu index="product"> <template slot="title"> <i class="el-icon-menu" /> <span>产品管理</span> </template> <el-menu-item index="product_list">产品列表</el-menu-item> <el-menu-item index="product_add">新增产品</el-menu-item> </el-submenu> </el-menu> </template> <script> export default { data() { return { activeIndex: 'home', menus: ['home', 'customer', 'customer_list'] // 模拟用户权限 } }, computed: { getMenuList() { return this.menus.map(menu => `/${menu}`) } }, watch: { getMenuList() { this.$nextTick(() => { this.$forceUpdate() }) } } } </script>
上述代码中,定义了一个menus
数组来模拟用户的菜单权限,当用户没有某个菜单的权限时,代码会在getMenuList
计算属性中排除该菜单的index
编号,从而动态地控制菜单的显隐性。使用计算属性的好处是,如果菜单权限发生改变,那么与之相关的组件会重新渲染。
五、elementui单选选项卡
ElementUI单选选项卡组件可以实现多个选项卡之间的切换。下面是一个简单的示例:
<template> <el-tabs v-model="activeIndex"> <el-tab-pane label="选项卡一">选项卡一的内容</el-tab-pane> <el-tab-pane label="选项卡二">选项卡二的内容</el-tab-pane> <el-tab-pane label="选项卡三">选项卡三的内容</el-tab-pane> </el-tabs> </template> <script> export default { data() { return { activeIndex: '选项卡一' } } } </script>
上述代码中,使用了el-tabs
组件以及el-tab-pane
组件。在el-tabs
组件中设置了v-model
来绑定选中的选项卡的label
。
六、elementui动态菜单
ElementUI动态菜单可以根据数据动态生成菜单。下面是一个简单的示例:
<template> <div class="demo"> <div v-for="(item, index) in menus" :key="index"> <el-submenu :index="item.id"> <template slot="title"> <i class="el-icon-location"></i>{{ item.label }} </template> <el-menu-item-group v-for="(subItem, subIndex) in item.children" :key="subIndex" :title="subItem.label"> <el-menu-item v-for="(childItem, childIndex) in subItem.children" :key="childIndex" :index="childItem.id"> {{ childItem.label }} </el-menu-item> </el-menu-item-group> </el-submenu> </div> </div> </template> <script> export default { data() { return { menus: [ { id: '1', label: '菜单一', children: [ { label: '分组一', children: [ { id: '1-1', label: '选项一' },