vue-右键菜单

2022-05-19  本文已影响0人  Alse
        <span
          class="note-content"
          :class="{ choosed_note: node.id == chooseFolderId }"
          @click="chooseCaseFolder(node)"
          @contextmenu.prevent="openMenu($event, node, path)"
        >
          <i class="el-icon-folder" />
          <i class="el-icon-rank drag-trigger" />
          {{ node.text }}
        </span>

    <!-- 右键菜单 -->
    <ul
      ref="rightMenu"
      v-show="rightMenuVisible"
      :style="{ left: rightMenuLeft + 'px', top: rightMenuTop + 'px' }"
      class="contextmenu"
    >
      <li @click="addChildProjectFolder()">新增子目录</li>
      <li @click="updateProjectFolder()">编辑当前目录</li>
      <li @click="deleteProjectFolder()">删除当前目录</li>
      <li @click="addProjectFolder()">新增根目录</li>
    </ul>
    // 选中某个节点
    chooseCaseFolder(node, path) {
      this.chooseFolderId = node.id;
      this.chooseFolderJsonPath = path;
    },
    // 右键菜单
    openMenu(e, item, path) {
      if (item) {
        this.chooseCaseFolder(item, path);
      }
      var x = e.pageX;
      var y = e.pageY;
      this.rightMenuTop = y;
      this.rightMenuLeft = x;
      this.rightMenuVisible = true;
    },
    closeMenu() {
      this.rightMenuVisible = false;
    },

  mounted() {
    // 失去焦点时关闭右击菜单
    document.addEventListener("click", (e) => {
      if (!this.$refs.rightMenu.contains(e.target))
        this.rightMenuVisible = false;
    });
  },
上一篇 下一篇

猜你喜欢

热点阅读