首页 > 其他分享 >element-tree相关经验汇总

element-tree相关经验汇总

时间:2023-06-18 16:55:30浏览次数:46  
标签:node const tree 汇总 节点 id element data children

前言:这个el-tree是前段时间做项目时候写的,一直没时间进行整理,最近那个项目的tree数据超级大,导致浏览器卡死,需要进行处理,正好,趁着这次,把相关的配置也给整理一下(*^▽^*)

大概呢就张这个样子:有查询、增加、删除、修改、上移、下移几个功能

 那就先写一下相关配置吧:

 我这个树上用到的属性(好像有些没用,下次再写可以精简一下了~)如图:

 相关属性配置如下:

show-checkbox  : 节点是否可以被选择

check-strictly : 子节点是否与父节点相互关联(就是选中子节点的时候,父节点是否也显示被选中)

  check-on-click-node  : 默认是false,点击复选框时才会选中节点。(为false,就是点击当前节点,不会选中)     node-key  : 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的     accordion  : 是否每次只能打开同一个层级     indent  : 相邻级节点间的水平缩进,单位为像素     lazy  : 是否懒加载子节点,需与 load 方法结合使用      load  : 加载子树数据的方法,仅当 lazy 属性为true 时生效     filter-node-method  :对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏(个人理解:就是控制树结构数据节点的节点的显示隐藏,需要配合watch使用达到模糊查询树结构的效果)   示例: :filter-node-method="filterNode"           //methods方法       filterNode(value, data) {         if (!value) return true;         return data.label.indexOf(value) !== -1;       }      //watch监听   监听tree的过滤器     通过vue的双向绑定 v-model  绑定filterText到input上面去。通过触发change事件就可以进行实现模糊查询了         watch: {         filterText(val) {            this.$refs.treeForm_mx.filter(val);         },       },   -------------------------------------------------------------分割线-------------------------------------------------------------------------   node-click  : 节点被点击时的回调  共有三个参数,分别是:1.该节点所对应的对象 2.节点对应的 Node 3.节点组件本身      check-change  : 节点选中状态发生变化时的回调  共有三个参数,分别是: 1.节点所对应的对象 2.节点本身是否被选中 3.节点的子树中是否有被选中的节点      check  : 当复选框被点击的时候触发      default-expanded-keys  : 默认展开的节点的 key 的数组     default-checked-keys  : 默认勾选的节点的 key 的数组

 tree新增功能的实现:(功能描述:在当前选中节点下添加一子节点)

效果图:弹出弹框,点击确认,在当前选中节点下添加一子节点,然后将整体的tree数据发送给接口

 代码如下:

       let data = this.selectData;  //this.selectData ===  节点所对应的对象,     我是在 @check="selectTree"事件中进行赋值的(点击复选框时触发)                                                   selectTree(node, list) {                                                       const node2 = this.$refs.treeForm_mx.getNode(node.id);                                                       if (this.selectData.id != node.id) {                                                             this.selectData = node;                                                             this.selectNode = node2;                                                         } else {                                                             this.selectData = {};                                                             this.selectNode = {};                                                         }                                                    }     let id = this.newID;  //newID:查询时候获取最后一个id,存放,新增的时候讲这个newID++,作为新节点的ID     let value = this.addValue;  //模型名称
  const newChild = {
          id: id++,
          label: value,
          children: [],
  };
  if (!data.children) {
          // this.$set(this.datas, "children", []);
  }
  data.children.push(newChild);
    this.baocun();//将整体tree数据发送接口


 tree编辑功能(功能描述:修改节点名称)

 效果图:

 

      let data = this.selectData;  //this.selectData和this.selectNode与新增一样都是在 @check="selectTree"事件中进行赋值的(点击复选框时触发)
      let node = this.selectNode;
      const parent = node.parent;
      const children = parent.data.children || parent.data;
      const index = children.findIndex((d) => d.id === data.id);
      let value = this.updaValue;
      children[index].label = value;
      this.showMB = false; //关闭弹框
      this.baocun();//将整体tree数据发送接口

tree删除功能(功能描述:删除该节点)

     let data = this.selectData;
      let node = this.selectNode;
      const parent = node.parent;
      const children = parent.data.children || parent.data;
      const index = children.findIndex((d) => d.id === data.id);
      children.splice(index, 1);
      this.showMB3 = false;
      this.selectData = {};
      this.selectNode = {};
      this.baocun();

tree上移功能(功能描述:同级进行上移)

let data = this.selectData;
        let node = this.selectNode;
        const parent = node.parent;
        const children = parent.data.children || parent.data;
        const index = children.findIndex((d) => d.id === data.id);
        if (index > 0) {
          const tempChildrenNodex1 = children[index - 1];
          const tempChildrenNodex2 = children[index];
          this.$set(children, index - 1, tempChildrenNodex2);
          this.$set(children, index, tempChildrenNodex1);
          this.defaultExpand[0] = data.id;
          this.tree_key++;
          this.baocun();
        } else {
          this.$notify({
            title: "上移节点",
            message: "已处于最顶部",
            offset: 60,
            type: "error",
          });
        }
      }

tree下移功能(功能描述:同级进行下移)

let data = this.selectData;
        let node = this.selectNode;
        const parent = node.parent;
        const children = parent.data.children || parent.data;
        const index = children.findIndex((d) => d.id === data.id);
        if (index < children.length - 1) {
          const tempChildrenNodex1 = children[index + 1];
          const tempChildrenNodex2 = children[index];

          this.$set(children, index + 1, tempChildrenNodex2);
          this.$set(children, index, tempChildrenNodex1);
          this.$set(this.datas);
          this.defaultExpand[0] = data.id;
          this.tree_key++;
          this.baocun();
        } else {
          this.$notify({
            title: "下移节点",
            message: "已处于最底部",
            offset: 60,
            type: "error",
          });
        }
      }

 

标签:node,const,tree,汇总,节点,id,element,data,children
From: https://www.cnblogs.com/a973692898/p/17489147.html

相关文章

  • 1483. Kth Ancestor of a Tree Node (Hard)
    Description1483.KthAncestorofaTreeNode(Hard)Youaregivenatreewithnnodesnumberedfrom0ton-1intheformofaparentarrayparentwhereparent[i]istheparentofithnode.Therootofthetreeisnode0.Findthekthancestorofagive......
  • odoo16里面修改tree视图样式
    一、在static文件夹下新建一个css文件夹并将*.css文件写入/*该文件用来定义视图中的一些格式,需要用到的地方直接在xml文件中进行引用*//*语法说明*//*tableth:nth-child(1)代表定位到table的th上面到第一个th标题nth-child()参考css语法http://www.w3school.com.cn/c......
  • TreeSet
    TreeSet的使用下面是TreeSet的方法使用,代码实现如下:publicstaticvoidmain(String[]args){ TreeSet<String>set=newTreeSet<>(); //添加元素 set.add("小希"); set.add("小空"); set.add("小丽"); set.add("小光"); //获取元素......
  • sourceTree下载安装以及使用
    下载官网1.滑动到官网最底下找到Downloadarchive (所有版本) 2.windows电脑就下windows的版本(mac系统同理),下载3.4.13就开始下软件了  3.开始安装---一直点下一步就OK啦 具体使用:1.点击+或者暂存所有,实际上是执行了gitaddREADME.md命令:2.点击提交就完成了......
  •  SourceTree安装说明
    SourceTree安装之后需要使用账号登陆以授权,以前是可以不登陆的,但是现在是强制登陆。虽然是免费授权,但是碰上不可抗力因素,登陆不是很方便,这里记录一下跳过这个初始化的步骤。先运行一次安装包,出现需要登录的窗口后退出。此时桌面上就以出现快捷方式,不需要再使用安装文件了。安装之......
  • element ui 修改按钮公共样式
    //.el-button--text.btntext.el-button--text{color:#000bff;}.btntext.el-button--text:hover{color:#000bff;}.btntext.el-button--text:active{color:#000bff;}.btntext.el-button.is-disabled,.btntext.el-button.is-disab......
  • element ui的表格头合并 方法
    表格自带的colSpan属性可以进行编辑我们利用dom获取后可以直接操作他这里写上事件代码和调用代码具体情况还是需要同学们自己去分析setSpan(){letnheader=document.getElementsByClassName('el-table__header')nheader[0].rows[1].cells[......
  • 安装的sourcetree打不开,点击以后就弹了下标标就没反应了
    到这个路径下C:\Users\sxws8\AppData\Local\Atlassiansxws8:这个根据你自己的路径来把这个删了就可以打开了。 ......
  • vue-element-admin 上传图片慢问题处理
    vue-element-admin自带上传图片组件,在使用的过程中发现上传速度很慢,尤其是上传一些大图需要耗时几十秒不能忍受。出现这种情况,是因为upload组件会将图片上传到action="https://httpbin.org/post" ,并返回转换成base64编码格式的数据。格式类似:data:image/jpeg;base64,/9j/4AAQS......
  • createelement的用法(转载)
    document.createElement()是在对象中创建一个对象,要与appendChild()或insertBefore()方法联合使用。其中,appendChild()方法在节点的子节点列表末添加新的子节点。insertBefore()方法在节点的子节点列表任意位置插入新的节点。​下面,举例说明document.createElement()的用......