iveiw Cascader 级联选择 组件 v-model的数据是一个数组类型,工作中如果需要回显的话,就需要传递所有父级元素的ID所组成的数组,但是后台只存放了目标元素的ID,所以只能自己去遍历数据获取了。
综上所述,需求确定了,就是:根据元素ID遍历树形结构,查找到所有父元素ID。
####下面是数据结构:
[{
"orgId": 1,
"orgName": "校长办公室1",
"parentId": 0,
"children": [{
"orgId": 2,
"orgName": "校长办公室2",
"parentId": 1,
"children": [{
"orgId": 3,
"orgName": "校长办公室3",
"parentId": 2,
}]
}]
}]
个人思路是,用递归查找到ID的所属元素,然后把每一级的parentId一起返回。
####实现方法:
function buildParentList(arr){
arr.forEach(g =>
{
if(g.parentId != undefined) {
let pid = g['parentId']
let oid = g['orgId']
parentList[oid] = pid
}
if (g.children != undefined)
buildParentList(g['children'])
})
}
function findParent(idx){
if (parentList[idx] != undefined){
let pid = parentList[idx]
console.log(pid)
findParent(pid)
}
}
####执行方法:
buildParentList(list)
findParent(3); // 0 1 2
findParent(2); // 0 1
findParent(4); // undefined
如有不足之处或者更好的方法欢迎指出!