vue elementUI节点树添加右键菜单组件

思路:在点击树的节点时,利用右键点击事件获取鼠标位置,并显示右键弹窗

		//外部套一个盒子@click.native="rightMenuClose"
        <el-tree
          ref="tree"
          class="tree"
          :data="treeData"
          node-key="id"
          :props="lazyProps"
          default-expand-all="true"
          highlight-current
          :filter-node-method="filterNode"
          :expand-on-click-node="true"
          @node-contextmenu="nodeMenu"
          @node-click="nodeClick"
        >
          <span slot-scope="{ node, data }">
            <span>
              <i class="el-icon-folder-opened" v-show="data.childType === 1"></i>
              <span v-show="data.childType === 2">
                <i class="el-icon-document-checked"></i>
              </span>
              {{ node.label }}
            </span>
          </span>
        </el-tree>
        
    <div id="right-menu" class="right-menu" :style="{ left: optionCardX + 'px', top: optionCardY + 'px' }" v-show="optionCardShow">
      <span @click="CreateFolderModalShow" class="menu-btn" v-show="this.rightoptionData.childType === 1">新建文件夹</span>
      <span @click="createqueryModalShow" class="menu-btn" v-show="this.rightoptionData.childType === 1">新建Query</span>
      <span @click="renameNode" class="menu-btn">重命名</span>
      <span @click="deleteNode" class="menu-btn">删除</span>
    </div>

//方法中添加
    nodeMenu(e, data, n, t) {
      this.optionCardShow = false
      this.optionCardX = e.x // 让右键菜单出现在鼠标右键的位置
      this.optionCardY = e.y
      this.rightoptionData = data
      this.node = n // 将当前节点保存
      this.optionCardShow = true // 展示右键菜单
    },
	    rightMenuClose(event) {
      let dom = document.getElementById('right-menu')
      if (dom) {
        if (!dom.contains(event.target)) {
          //点击到了id为right-menu以外的区域,就隐藏菜单
          this.optionCardShow = false
        }
      }
    },
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在vue百度离线地图中添加右键菜单,你可以按照以下步骤进行: 1. 安装第三方插件vue-baidu-map,使用npm或yarn进行安装。 2. 在组件中引入百度地图API和vue-baidu-map插件: ``` <script src="http://api.map.baidu.com/api?v=2.0&ak=your_app_key"></script> import BaiduMap from 'vue-baidu-map' ``` 3. 在组件中注册BaiduMap组件,并设置地图配置项: ``` <template> <div> <baidu-map :center="center" :zoom="zoom" :enableScrollWheelZoom="true"> <bm-marker :position="position" :title="'Marker'" :label="'Marker'" :clickable="true" :animation="animation"></bm-marker> </baidu-map> </div> </template> <script> export default { data() { return { center: { lng: 116.404, lat: 39.915 }, zoom: 15, position: { lng: 116.404, lat: 39.915 }, animation: 'DROP' } }, components: { 'baidu-map': BaiduMap, 'bm-marker': BmMarker } } </script> ``` 4. 在mounted生命周期函数中添加右键菜单事件: ``` mounted() { let map = this.$refs.map.getBMap() let menu = new BMap.ContextMenu() let txtMenuItem = [ { text: '放大', callback: this.zoomIn }, { text: '缩小', callback: this.zoomOut } ] for (let i = 0; i < txtMenuItem.length; i++) { menu.addItem(new BMap.MenuItem(txtMenuItem[i].text, txtMenuItem[i].callback, 100)) } map.addContextMenu(menu) }, methods: { zoomIn() { let map = this.$refs.map.getBMap() let zoom = map.getZoom() map.setZoom(zoom + 1) }, zoomOut() { let map = this.$refs.map.getBMap() let zoom = map.getZoom() map.setZoom(zoom - 1) } } ``` 在这个例子中,我们创建了一个右键菜单,其中包含放大和缩小的选项。当用户在地图上右键单击时,将显示此菜单。点击菜单项时,将调用相应的方法来放大或缩小地图。 希望这能帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waves0001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值