Element-UI中表格右键的右击事件-添加一个右击菜单选择栏 (vue+element)

本文详细介绍了如何在Element-UI的表格中使用@row-contextmenu事件创建右键菜单,包括HTML结构、CSS样式和Vue交互方法。通过实例展示了如何添加菜单项并处理点击事件,适用于前端开发人员学习Element UI的高级用法。

Element-UI中表格的右击事件-添加一个右击菜单选择栏 (vue+element)

基于 @row-contextmenu=“” 方法
  1. 首先,我们在表格组件中添加@row-contextmenu=""方法

    <el-table @row-contextmenu="rightClick">
    </el-table>
    
  2. 然后我们需要有一个右击之后的弹出的菜单选择栏

    html部分:

    <div id="menu" class="menuDiv">
          <ul class="menuUl">
            <li
              v-for="(item, index) in menus"
              :key="index"
              @click.stop="infoClick(index)"
            >
              <i :class="item.icon"></i> {{ item.name }}
            </li>
          </ul>
    </div>
    

    css部分:用了scss

    // 菜单样式
      .menuDiv {
        display: none;
        position: absolute;
    
        .menuUl {
          height: auto;
          width: auto;
          font-size: 14px;
          text-align: left;
          border-radius: 4px;
          border: none;
          background-color: #ffffff;
          color: #606266;
          list-style: none;
          border: 1px solid #ebeef5;
    
          li {
            width: 140px;
            height: 35px;
            line-height: 35px;
            padding: 0 10px;
            cursor: pointer;
            border-bottom: 1px solid rgba(255, 255, 255, 0.47);
    
            &:hover {
              display: block;
              background-color: #ecf5ff;
              color: #7abbff;
            }
          }
        }
      }
    

    data中的数据

    data(){
        return {
          //右键菜单栏
          menus: [
            { name: "菜单一", operType: 1, icon: "el-icon-upload2" },
            { name: "菜单二", operType: 2, icon: "el-icon-folder-add" },
            { name: "菜单三", operType: 3, icon: "el-icon-edit-outline" },
            { name: "菜单四", operType: 4, icon: "el-icon-folder-remove" },
            { name: "菜单五", operType: 5, icon: "el-icon-download" },
          ],
        }
    }
    
  3. 接着,我们就要写交互了。

    在methods中写:

        // 表格右击的功能
        rightClick(row, column, event) {
          event.preventDefault();
          let menu = document.querySelector("#menu");
          // 根据事件对象中鼠标点击的位置,进行定位
          menu.style.left = event.clientX - 258 + "px";
          menu.style.top = event.clientY - 75 + "px";
          // 改变自定义菜单的隐藏与显示
          menu.style.display = "block";
          menu.style.zIndex = 1000;
    	},
        
    
    

    讲解:event.preventDefault(); 这个代码是阻止默认的右击弹出框

  4. 右键弹出了菜单栏,我们还需要隐藏它。这里我使用的方法是用左击点击表格使得菜单栏隐藏。方法各异,自由发挥

    在methods中写:

    	// table的左键点击当前行事件
        clickRow(row, column, event) {
          let menu = document.querySelector("#menu");
          menu.style.display = "none";
        },
    
  5. 最后就是我们需要点击菜单栏需要做的工作了。

    在methods中写:

    	// 右击自定义菜单的点击事件
        infoClick(index) {
          if (index === 0) {
              // 要做的事情
          }
          let menu = document.querySelector("#menu");
          menu.style.display = "none";
        },
    
`a-table` 是 Element UI 提供的一个基于 Vue表格组件,它允许你在表格单元格上添加交互功能,包括右键点击。为了实现在右键点击时显示一个新的菜单,你可以按照以下步骤操作: 1. 首先,在 `a-table` 中,你需要设置每一行或某一列支持 `on-contextmenu` 事件,这会在用户右键点击时触发。 ```html <a-table :data="tableData" @contextmenu="handleRightClick"> <!-- ... --> </a-table> ``` 2. 定义 `handleRightClick` 函数,这个函数会接收一个 `event` 参数,表示用户触发右键点击的位置信息。在这个函数里,创建并展示新的上下文菜单。 ```javascript export default { methods: { handleRightClick(e) { const menu = e.target; // 创建一个新的 Vue 内部的 <el-menu> 或自定义的下拉列表 const contextMenu = new Vue({ data() { return { items: ['选项1', '选项2', '更多...'] }; }, template: ` <el-menu placement="bottom" @select="onMenuItemSelect" > <el-menu-item v-for="(item, index) in items" :key="index"> {{ item }} </el-menu-item> </el-menu> `, }).$mount(); // 显示菜单 menu.addEventListener('contextmenu', (e) => { e.preventDefault(); // 阻止浏览器默认的行为(阻止弹出系统菜单) this.$emit('openContextMenu', contextMenu); }); // 关闭菜单事件监听 menu.addEventListener('mouseleave', () => { this.$emit('closeContextMenu'); }); }, onMenuItemSelect(item) { console.log(`选择了:${item}`); // 在这里处理选中的菜单项 }, } } ``` 3. 接下来,你还需要在父组件中处理 `openContextMenu` 和 `closeContextMenu` 事件,来控制菜单的显示和隐藏。 记住,以上代码示例假设你已经安装并引入了 Element UI,并且已经在项目中设置了 VueElement UI 的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值