前提:当后端只返回areacode值。如:
平铺数据,且只有 areacode能作为层级区分标识
let arr =["1507","150702"]
this.$nextTick(() => {
arr.forEach((element) => {
selectSubsidiaryDepartment = [
this.cascadeDisplay(this.areaCodes, element),
];
this.allocationform.assessmentIndexAssign.push(
...selectSubsidiaryDepartment
);
});
this.indexs++;
});
// 行政区划回显
cascadeDisplay(object, value) {
for (var key in object) {
if (object[key].value == value) return [object[key].value];
if (
object[key].children &&
Object.keys(object[key].children).length > 0
) {
var temp = this.cascadeDisplay(object[key].children, value);
if (temp) return [object[key].value, temp].flat();
}
}
},
arr数组为提取的标识,this.areaCodes为原始数据,传入到cascadeDisplay方法进行递归对比。this.allocationform.assessmentIndexAssign为组件绑定的值。
ps:如果是点击弹窗,再进行回显,这时组件还是没有更新,可以绑定 :key="indexs",让其自增。达到刷新组件。