实例-Vue中使用右键菜单之@xunlei/vue-context-menu组件的使用

npm地址——https://www.npmjs.com/package/@xunlei/vue-context-menu

效果

1、安包

npm install @xunlei/vue-context-menu

2、代码

index.vue

<template><div id="dataPage"><el-tree :data="treeData" id="el-tree" :props="defaultProps" @node-click="handleNodeClick"></el-tree><VueContextMenu class="right-menu" :target="contextMenuTarget" :show="contextMenuVisible"@update:show="(show) => contextMenuVisible = show"><a href="javascript:;" @click="createDatabaseOrTable">新建{{ this.menuLabel }}</a><a href="javascript:;" @click="deleteDatabaseOrTable">删除{{ this.menuLabel }}</a><a href="javascript:;" @click="attribute">属性</a><a href="javascript:;" @click="exportDatabaseOrTable">导出{{ this.menuLabel }}</a></VueContextMenu></div>
</template><script>
// 直接在组件中引入使用
import { component as VueContextMenu } from '@xunlei/vue-context-menu'export default {components: { VueContextMenu },data() {return {treeData: [{label: '一级 1',children: [{label: '二级 1-1',children: [{label: '三级 1-1-1'}]}]},],contextMenuTarget: null,contextMenuVisible: false,nodeData: { },defaultProps: {children: "children",label: "label",},}},
mounted() {this.$nextTick(() => {// vue-context-menu 需要传入一个触发右键事件的元素,等页面 dom 渲染完毕后才可获取this.contextMenuTarget = document.querySelector('#el-tree')// 获取所有的 treeitem,循环监听右键事件const tree = document.querySelectorAll('#el-tree [role="treeitem"]')tree.forEach(i => {i.addEventListener('contextmenu', event => {// 如果右键了,则模拟点击这个treeitemevent.target.click()})})})
},computed: {menuLabel() {return this.nodeData.children == null ? '表' : '数据库';}
},methods: {handleNodeClick(data) {// console.log(data)this.nodeData = data},createDatabaseOrTable() {this.contextMenuVisible = false;console.log("create " + this.menuLabel);},deleteDatabaseOrTable() {this.contextMenuVisible = false;console.log("delete " + this.menuLabel);},attribute() {this.contextMenuVisible = false;console.log("show attribute " + this.menuLabel);},exportDatabaseOrTable() {this.contextMenuVisible = false;console.log("export " + this.menuLabel);},}
}
</script>
<style lang="scss">
html,
body {height: 100%;
}#dataPage {margin: 0 0;font-family: 'Microsoft Yahei', 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;height: 100%;
}// 右键会选中文字,为了美观将它禁用
#el-tree {user-select: none;
}.right-menu {font-size: 14px;position: fixed;background: #fff;border: solid 1px rgba(0, 0, 0, .2);border-radius: 3px;z-index: 999;display: none;
}.right-menu a {width: 150px;height: 28px;line-height: 28px;text-align: center;display: block;color: #1a1a1a;
}.right-menu a:hover {background: #eee;color: #fff;
}.right-menu {border: 1px solid #eee;box-shadow: 0 0.5em 1em 0 rgba(0, 0, 0, .1);border-radius: 1px;
}a {text-decoration: none;
}.right-menu a {padding: 2px;
}.right-menu a:hover {background: #99A9BF;
}
</style>

实例-Vue中使用右键菜单之@xunleivue-context-menu组件的使用相关推荐

  1. vue中,右键菜单组件v-contextmenu的使用

    vue中,右键菜单组件v-contextmenu的使用 1.效果 右键菜单之禁用和子菜单 2.流程 第一步:安包 npm install v-contextmenu --save-dev npm in ...

  2. 在(CListView)列表视图中添加右键菜单的方法

    使用弹出式菜单(PopMenu) 弹 出式菜单(PopMenu)大家都熟悉,在WIN98的桌面上单击鼠标右键弹出的菜单就是弹出式菜单.通常情况下,弹出式菜单在鼠标右键单击时弹出,当 然,也可以根据需要 ...

  3. WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

    WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 问题描 ...

  4. WPF中的右键菜单ContextMenu

    WPF中的右键菜单主要是通过ContextMenu来实现,ContextMenu的使用有两种方式 一..在Resources中声明,在控件中使用. 1.在Resources中添加ContextMenu ...

  5. Element组件引发的Vue中mixins使用,写出高复用组件

    我们都知道 Vue 采用的是一种组件化开发模式,组件在 Vue 中一个非常重要的核心概念.每个组件都是一个完整的实例,组件的创建,组件间的通讯,组件如何更好的复用,以及整个的生命周期的钩子.所以你会发 ...

  6. Vue中两个让你幸福感爆棚的组件导入小技巧之require.context

    前言 小伙伴们大家好,在上一篇文章Vue中两个让你幸福感爆棚的组件导入小技巧之循环代替Ctrl C/V(独家总结)中我们已经学习了一个注册全局组件的小技巧,使得我们在注册大量全局组件时不再被Vue.u ...

  7. 关于JFace中的右键菜单Action类,ActgionGroup类,MenuManager类

    Action类,ActionGroup类,MenuManager类介绍 SWT中菜单是Menu类,菜单项用MeauItem类来实现.但是在实际开发中,同一种功能会有多中表现形式, 例如:Eclipse ...

  8. html模拟右键系统菜单,HTML中自定义右键菜单功能

    我们使用的应用系统很多都有右键菜单功能.但是在网页上面,点击右键一般显示的却是IE默认的右键菜单,那么我们如何实现自己的右键菜单呢?下面将讲解右键菜单功能的实现原理和实现代码. 实现原理 在HTML语 ...

  9. easyui datagrid中添加右键菜单事件

    //HTML中代码  <div id="menu" class="easyui-menu" style="width:150px;"& ...

最新文章

  1. 接口方法和映射器的statement id 是怎么绑定起来的?
  2. XML解析之JAXP案例详解
  3. 计算机应用领域变化,计算机应用领域与发展阶段.ppt
  4. BCGControlBar入门使用手册
  5. python-format格式化专题介绍1909
  6. 多线程编程之Apue3rd_Chapter11之互斥锁_读写锁_自旋锁
  7. 10大国外IT网站(转)
  8. C++——unique()和unique_copy()
  9. 测试工程师值得被尊重!是否有此共鸣!
  10. 用C#在Visual Studio写Javascript单元测试
  11. 扫码器 android 采集,caiPDA条码扫描采集器
  12. 手心输入法漏洞绕过win8登陆验证
  13. 洛谷 P5602 小E与美食 (尚贤)
  14. python国外文献_python的英文文献
  15. html超出后变成点点点,css多行文字超出显示点点点...-webkit-line-clamp详解
  16. ftp 连接失败。500 OOPS: cannot change directory:
  17. 扬帆际海:shopee店铺关键词广告怎么获得流量?
  18. mac笔记——from“http://macshuo.com/”
  19. 如何清理占用计算机内存,告诉你如何深度清理电脑内存
  20. 解决attempted to register plugin but it was already registered with this flutterengine

热门文章

  1. Activiti7.0进阶学习(三):assignee的值用UEL的POJO实现
  2. 若每个局域网都要与其他局域网直接通信,那么连接n个局域网需要多少个点到点的广域网?...
  3. java打出菱形简介_使用java打印出菱形图案的操作步骤
  4. java 画饼图和图案
  5. android-settings添加字体更换-前篇-setting简单一览
  6. Linux 进程:进程退出返回值的获取
  7. 第五次网页前端培训(JS)
  8. 互联网产品设计进阶笔记(18)有关互联网用户研究的热讯站点
  9. 数智化转型再加速,低代码开发助力企业转型
  10. 360度相机(全景图片)中的卷积(一):Equirectangular Convolutions