獲取所有子節點數據
關鍵代碼

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屬性,它的屬性值必須是唯一存在的.
也可以給他們某個節點添加不可用功能。