当前位置:   article > 正文

element tree树结构 “右键自定义菜单”_el-tree右键菜单

el-tree右键菜单

1. 页面结构

  1. <el-tree
  2. :data="data"
  3. :props="defaultProps"
  4. node-key="id"
  5. accordion <!-- 手风琴-->
  6. @node-click="handleNodeClick" <!-- 点击事件 -->
  7. @node-contextmenu="youjian" <!-- 右键事件-->
  8. >
  9. <!-- 插槽 拿到tree 的 lable 根据钩端的state来标识状态-->
  10. <span class="custom-tree-node" slot-scope="{ node, data }">
  11. <span :style="{color:data.state == 0?'':'red'}">
  12. {{node.label}}
  13. </span>
  14. </span>
  15. </el-tree>
  16. <!-- 右键菜单-->
  17. <ul id="menu" class="menu" v-show="menuVisible">
  18. <li class="menu__item" @click="handleSelect(1)">平级添加</li>
  19. <li class="menu__item" @click="handleSelect(2)" v-if="datacopy.level!=3">下级添加</li>
  20. <li class="menu__item" @click="handleSelect(3)">修改</li>
  21. <li class="menu__item" @click="handleSelect(4)">禁用</li>
  22. </ul>
  1. 数据

  1. data() {
  2. return {
  3. data: [], //树结构数据
  4. datacopy: {}, //右键拿到当前点击元素的值
  5. datacopy2: "",
  6. defaultProps: { // 将键改为数据库返回的元素名称
  7. children: "childrens",
  8. label: "productTypeName",
  9. },
  10. menuVisible: false
  11. };

3. 右键菜单

  1. //产品类别的右键菜单
  2. youjian(MouseEvent, object, Node, element) {
  3. this.menuVisible = false; // 先把模态框关死,目的是 第二次或者第n次右键鼠标的时候 它默认的是true
  4. this.menuVisible = true; // 显示模态窗口,跳出自定义菜单栏
  5. this.datacopy = {
  6. //右键的数据赋值
  7. id: object.sfid,
  8. level: Node.level,
  9. parseId: object.parentId,
  10. state: object.state,
  11. productTypeName: object.productTypeName,
  12. };
  13. var menu = document.querySelector("#menu");
  14. menu.style.left = 150 + "px"; //菜单距离左边的像素
  15. menu.style.top = event.currentTarget.offsetTop + "px";//菜单距离顶部的像素
  16. document.addEventListener("click", this.foo); // 给整个document添加监听鼠标事件,点击任何位置执行foo方法
  17. },
  18. foo() {
  19. // 取消鼠标监听事件 菜单栏
  20. this.menuVisible = false;
  21. document.removeEventListener("click", this.foo); // 要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了
  22. }

4. 右键菜单的方法

  1. handleSelect(key) {
  2. //key是点击的第几个方法
  3. //右键的时候取到当前点击的元素值this.datacopy 通过 this.datacopy.level知道自己点的是第几级 同级添加id为0 子级添加id为父级id
  4. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/119216
推荐阅读
相关标签
  

闽ICP备14008679号