iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue+Elementui实现树形控件右键菜单
  • 914
分享到

Vue+Elementui实现树形控件右键菜单

2024-04-02 19:04:59 914人浏览 薄情痞子
摘要

本文实例为大家分享了Vue+Element ui实现树形控件右键菜单的具体代码,供大家参考,具体内容如下 需求 实现树形控件右键菜单功能,有添加文件、删除文件、重命名功能 一、按需引

本文实例为大家分享了Vue+Element ui实现树形控件右键菜单的具体代码,供大家参考,具体内容如下

需求

实现树形控件右键菜单功能,有添加文件、删除文件、重命名功能

一、按需引入ELEMENTUI组件

按需引入ELEMENTUI组件

二、实现菜单功能

1.TEMPLATE

代码如下(示例):

<!-- 树形组件 -->
  <el-tree
              :data="data"
              @node-contextmenu="floderOption"
              @node-click="handleNodeClick"
              node-key="id"
            >
            <!--  -->
              <span 
                class="custom-tree-node" 
                slot-scope="{ node, data}" 
                style="width:100%"
              >
                <i class="el-icon-folder" style="color:#DFBA49;margin-right:59x"></i>
                <span style="font-size:15px">{{node.label}}</span>
              </span>
            </el-tree>
            <!-- 右键菜单栏 -->
            <div :style="{'z-index':999,'position':'fixed',left:optionCardX + 'px',
            top: optionCardY + 'px',
            width:'100px',
            background:'white','box-shadow':'0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04)'}" 
            v-show="optionCardShow"
            id="option-button-group">
       <el-button @click="append" class="option-card-button">新建</el-button>
       <el-button @click="remove" class="option-card-button">删除</el-button>
       <el-button @click="rename" class="option-card-button">重命名</el-button>
</div>

2.JS

代码如下(示例):

// 右键菜单属性设置
    floderOption(e,data,n,t){
      this.optionCardShow = false
      this.optionCardX =e.x
      this.optionCardY = e.y - 110
      this.optionData = data
      this.node = n
      this.tree = t
      this.optionCardShow = true
    },
    // 点击框外区域 隐藏菜单
    OptionCardClose(event) {
      var currentCli = document.getElementById("option-button-group");
      if (currentCli) {
        if (!currentCli.contains(event.target)) { //点击到了id为option-button-group以外的区域,就隐藏菜单
          this.optionCardShow = false;
        }
      }
    },
    // 创建
    append() {
      this.optionCardShow = false
      this.$prompt('请输⼊⽂件名', '提⽰', { // 弹出框⽤于输⼊⽂件名
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        inputPattern: /^\S{1,10}$/,
        inputErrORMessage: '命名不合法,请重新命名'
      }).then(({
        value
      }) => {
        if (this.node.level >= 3) {
          this.$message.error("最多只⽀持三级!")
          return false;
        }
        console.log(this.optionData.id);
        const newChild = { // 新建⼀个⼦节点
          id: id++,
          label: value,
          children: []
        };

        // TODO 测试修改
        //测试,在树形控件下方显示创建后的内容
        const newSet = {
          id: id++,
          name:value
        }

        console.log(this.optionData.children);
        if (!this.optionData.children) { // 如果当前节点没有⼦节点,那就新建⼀个空的⼦节点数组,⽤来存放新建⼦⽂件夹
          this.$set(this.optionData, 'children', []);
          this.$set(this.testData2, 'children', []) //测试,在树形控件下方显示创建后的内容
        }
        this.optionData.children.push(newChild); // 插⼊
        this.testData2.push(newSet)
        //同时展开节点
        if (!this.node.expanded) {
          this.node.expanded = true
        }
        this.$message({
          type: 'success',
          message: '⽂件夹新建成功!'
        });
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '创建失败'
        });
      });
    },
    // 删除
    remove() {
      this.optionCardShow = false
      this.$confirm('此操作将永久删除该⽂件夹, 是否继续?', '提⽰', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        const parent = this.node.parent;
        const children = parent.data.children || parent.data;
        const index = children.findIndex(d => d.id === this.data.id);
        children.splice(index, 1);
        this.$message({
          type: 'success',
          message: '删除成功!'
        });
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    // 重命名
    rename(){
      console.log(this.node)
      this.optionCardShow = false
      this.$prompt('请输⼊⽂件名', '提⽰', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        inputPlaceholder: this.node.data.label,
        inputPattern: /^\S{1,10}$/,
        inputErrorMessage: '⽂件名长度在1到10之间'
      }).then(({
        value
      }) => {
        this.node.data.label = value
        this.$message({
          type: 'success',
          message: '⽂件夹已重命名!'
        });
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '取消输⼊'
        });
      });
    },
    test(node) {
      console.log(node.id);
      this.clickNode = node.id
    },
    handleNodeClick(item, data) {
      console.log('item: ',item,'data: ', data);
      this.test(data)
    }

3.STYLE

.folder-box {
height: 100%;
}

.option-card-button {
width: 100%;
margin-left: 0;
font-size: 10px;
border-radius: 0;
}

4.data()

data(){
    return{
      optionCardX:'',
      optionCardY:'',
      optionCardShow:false,
      optionData:[],
      clickNode:0,
      node:null,
      tree:null,
      data:[{
        id:1,
        label:'图层树',
      }],
      testData:[
        {
          name:'影像'
        },
        {
          name:'地形'
        },
        {
          name:'模型'
        },
        {
          name:'矢量'
        },
      ],
      testData2:[
        {
          id:0,
          name:''
        },
        {
          id:1,
          name:'图层树'
        },
      ]
    }
  },

三、效果图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Vue+Elementui实现树形控件右键菜单

本文链接: https://www.lsjlt.com/news/164293.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue+Elementui实现树形控件右键菜单
    本文实例为大家分享了Vue+Element ui实现树形控件右键菜单的具体代码,供大家参考,具体内容如下 需求 实现树形控件右键菜单功能,有添加文件、删除文件、重命名功能 一、按需引...
    99+
    2024-04-02
  • vue实现右键菜单栏
    本文实例为大家分享了vue实现右键菜单栏的具体代码,供大家参考,具体内容如下 vue实现右键菜单栏和原生js大同小异,都是需要明白两个点 1.contextmenu事件是鼠标的右键点...
    99+
    2024-04-02
  • Vue组件tree如何实现树形菜单
    这篇文章主要为大家展示了“Vue组件tree如何实现树形菜单”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue组件tree如何实现树形菜单”这篇文章吧。vue...
    99+
    2024-04-02
  • Vue如何实现右键菜单
    小编给大家分享一下Vue如何实现右键菜单,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!效果图安装npm install vue-contextmenujs或yarn add vue-...
    99+
    2023-06-25
  • vue实现右键弹出菜单
    在最近工作中,有一个需求,需要做一个表格,并且对该表格右键弹出菜单支持增删改,这里做下总结,功能截图如下: 首先定义菜单结构 <!-- 菜单 --> <div c...
    99+
    2024-04-02
  • 1分钟Vue实现右键菜单
    目录效果图安装 代码实现 自定义样式 总结 高效实现需求,避免重复造轮子。今天给大家分享的是,如何在最短的时候内实现右键菜单。方法也很简单,一个插件就可以搞定,话不多说,上效果图: ...
    99+
    2024-04-02
  • vue怎么实现右键菜单栏
    本篇内容主要讲解“vue怎么实现右键菜单栏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么实现右键菜单栏”吧!vue实现右键菜单栏和原生js大同小异,都是需要明白两个点contextme...
    99+
    2023-06-29
  • 怎么使用Vue组件tree实现树形菜单
    本篇内容主要讲解“怎么使用Vue组件tree实现树形菜单”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Vue组件tree实现树形菜单”吧!vue 编写的树形菜单,小巧实用,支持vue1....
    99+
    2023-07-04
  • Vue el-table实现右键菜单功能
    本文实例为大家分享了Vue el-table实现右键菜单功能的具体代码,供大家参考,具体内容如下 实现的效果如下: 1.el-table和右键菜单视图代码 @row-context...
    99+
    2024-04-02
  • vue3+ts实现树形组件(菜单组件)
    目录前言全局注册组件组件的实现树形组件的基本结构:完善组件(添加点击事件,过渡效果)✌️✌️添加过渡总结:前言 之前在使用element-plus的使用,使用el-menu组件,并且...
    99+
    2023-05-18
    vue3 ts 树形组件 vue3 ts菜单组件
  • 怎么使用Vue递归组件实现树形菜单
    本文小编为大家详细介绍“怎么使用Vue递归组件实现树形菜单”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Vue递归组件实现树形菜单”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下图,点击后打开二级...
    99+
    2023-07-04
  • vue通过element树形控件实现树形表格
    目录实现效果图安装依赖自定义树形控件其他实现总结在vue中通过element树形控件来实现树形表格的效果 通过缩进来实现近似树形表格的效果 实现效果图 安装依赖 $ npm ins...
    99+
    2024-04-02
  • vue实现自定义全局右键菜单
    前段时间公司在做一个webIDE项目,其中有对文件树的各种操作,主要通过右键菜单实现,今天就来记录一下怎么在vue项目中实现全局的自定义右键菜单。效果如图所示: 注意: 需要在项目...
    99+
    2024-04-02
  • java实现树形菜单对象
    本文实例为大家分享了java实现树形菜单对象的具体代码,供大家参考,具体内容如下 1、SysMenu package com.zy.shiro.domain; import c...
    99+
    2024-04-02
  • vue递归组件之如何实现简单树形控件
    这篇文章主要介绍vue递归组件之如何实现简单树形控件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、递归组件-简单树形控件预览及问题 在编写树形组件时遇到的问题:组件如何...
    99+
    2024-04-02
  • vue中自定义右键菜单插件
    前言: 作为一个刚刚入门前端的搬砖工作者,写博客只是为了能够记录自己因为业务使用过的一些插件,为了后续更好的使用和改造 本文分享了vue中自定义右键菜单插件的具体代码,供大家参考,具...
    99+
    2024-04-02
  • Vue el-table怎么实现右键菜单功能
    这篇文章主要介绍了Vue el-table怎么实现右键菜单功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue el-table怎么实现右键菜单功能文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-06-29
  • vue怎么实现左侧菜单树形图递归
    这篇文章主要讲解了“vue怎么实现左侧菜单树形图递归”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现左侧菜单树形图递归”吧!先说说遇到的坑,由于是子父组件,当时传递使用的是子父组...
    99+
    2023-07-04
  • Vue2递归组件如何实现树形菜单
    小编给大家分享一下Vue2递归组件如何实现树形菜单,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果如下图,点击后打开二级菜单,...
    99+
    2024-04-02
  • java中怎么实现树形菜单
    在Java中实现树形菜单可以使用树形数据结构来存储菜单项,然后通过递归的方式来构建树形菜单。 以下是一个简单的示例代码实现树形菜单:...
    99+
    2024-03-13
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作