el-tree获取所有子节点以及给子节点添加属性


获取所有子节点数据

关键代码

var userArr=[]
            function getChildren(data){
                
                if(data && data.length>0){
                    data.forEach((item,index)=>{
                        if(item.children){
                            getChildren(item.children)
                        }else{
                            if(item.type=="student"){
                                userArr.push(item)
                            }
                        }
                    })
                }                
                return userArr;
            }

userArr全局变量,不要定义在函数里面

item.type=="student"  这里是子节点的判断条件;

调用

var treeUsers =getChildren(userData)
console.log(treeUsers)

给子节点添加属性

关键代码

function  formatTreeData(data) {
      if (data && data.length > 0) {
        data.forEach((item) => {
          if (item.children) {
            //  item.rid = item.id +randomWord(5);
            .formatTreeData(item.children);
          } else {
            item.rid = item.id + randomWord(5);
            return;
          }
        });
      }
      return data;
    };
function randomWord(length = 32) {
      //默认32位
      //由以下元素组成
      let arr = [
        "0",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "a",
        "b",
        "c",
        "d",
        "e",
        "f",
        "g",
        "h",
        "i",
        "j",
        "k",
        "l",
        "m",
        "n",
        "o",
        "p",
        "q",
        "r",
        "s",
        "t",
        "u",
        "v",
        "w",
        "x",
        "y",
        "z",
      ];
      let num = "";
      for (let i = 0; i < length; i++) {
        num += arr[parseInt(Math.random() * arr.length)];
      }
      return num;
    }

给所有子节点添加唯一性rid属性,这是因为在工作项目中遇到相同用户信息存在不同部门中,原本后端生成的id属性不具有了唯一性,在是使用setChecked等需要用到node-key属性,它的属性值必须是唯一存在的.

也可以给他们某个节点添加不可用功能。