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属性,它的属性值必须是唯一存在的.
也可以给他们某个节点添加不可用功能。