Element UI中el-tree 添加右键菜单的方法,附带问题和解决方案

2024-03-27 1470阅读

1、在el-tree 中添加方法 @node-contextmenu="rightClick"

   

2、建立一个右键组件,可以使用 el-menu 组件,优点是,可以借助el-menu 的 selec方法进行增删改查以及样式不用手写了,弊端是不容易获取点击的Dom,先暂时这样写吧

          
          
            
              
                
                  新增课时
                
                
                  删 除
                
              
          

3、methods中的写法

  rightClick(e, data, node) {
      this.menuShow = false // 先把模态框关死,目的是 第二次或者第n次右键鼠标的时候 它默认的是true
      this.menuShow = true
      e.preventDefault() //关闭浏览器右键默认事件
      this.rightMenu = { top: e.pageY + 'px', left: e.pageX + 'px' }
      document.addEventListener('click',(ev)=>{
        // ev.stopImmediatePropagation()
        if(ev.target!==document.querySelector('.el-menu-item.is-active')){ 
          this.foo() 
        }
      })
    },
    foo() {
      // 取消鼠标监听事件 菜单栏
      this.menuShow = false
      document.removeEventListener('click', this.foo) // 关掉监听,
    },

3、点击树状节点时,关闭右键组件

  treeNodeClick(){
      this.foo() 
    },

4、css样式

.tree_rightmenu {
  position: fixed;
  width: 120px;
  border: 1px solid rgba(0, 0, 0, 0.15);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  z-index: 1000;
}

5、最终效果

Element UI中el-tree 添加右键菜单的方法,附带问题和解决方案

存在问题:在右键弹出的组件中,点击右键,会默认弹出浏览器的右键菜单栏;

想到的解决办法是,点击该节点时,使用原生js的 contextmenu 事件,在事件中用 e.preventDefault()方法进行阻止

最后建议使用vue右键插件 vue-contextmenujs

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]