element的多级选中_element UI 级联选择器默认选中的值

element UI的Cascader级联选择器组件在编辑时,

它需要一个数组值,而一般我们api给的数据是一个值。

所以两个解决方法:说服后台,让后台给arr。

自己根据给定的值获取级联关系arr。

刚好这两天解决了这个问题。

写了一个方法如下:

function getTreeDeepArr(key, treeData) {

let arr = []; // 在递归时操作的数组

let returnArr = []; // 存放结果的数组

let depth = 0; // 定义全局层级

// 定义递归函数

function childrenEach(childrenData, depthN) {

for (var j = 0; j < childrenData.length; j++) {

depth = depthN; // 将执行的层级赋值 到 全局层级

arr[depthN] = (childrenData[j].id);

if (childrenData[j].id == key) {

// returnArr = arr; // 原写法不行, 因 此赋值存在指针关系

returnArr = arr.slice(0, depthN+1); //将目前匹配的数组,截断并保存到结果数组,

break

} else {

if (childrenData[j].children) {

depth ++;

childrenEach(childrenData[j].children, depth);

}

}

}

return returnArr;

}

return childrenEach(treeData, depth);

}

// 结果:

// console.log(getTreeDeepArr(1, treeData)); // [1]

// console.log(getTreeDeepArr(3, treeData)); // [1, 3]

// console.log(getTreeDeepArr(5, treeData)); // [1, 4, 5]

var treeData = [{

id: 1,

children: [{

id: 3

},{

id: 4,

children: [{

id: 5,

children: [{

id: 6

},

{

id: 8

}]

}]

},{

id: 7

},{

id: 12,

children: [{

id: 13

}]

}]

},{

id: 2,

children: [{

id: 9,

children: [{

id: 10

}]

}]

},{

id: 11

}];

// 结构:

//

//   1 --- 3

//     --- 4 --- 5 --- 6

//                 --- 8

//     --- 7

//   2 --- 9 --- 10

//   11


版权声明:本文为weixin_39763293原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。