项目问题场景:
在使用element组件Cascader 级联选择器中,请求后台数据时,总会在最后一个出现暂无数据,导致选中不了。
解决方案:
这里有两种解决方案
一、使用递归方式,把最后的children设为undefined
// 渲染spu树
Spugoods(){
Tree().then((res)=> {
if(res.data.errmsg == '成功'){
this.categorygoods = this.getTreeData(res.data.data)
}
}).catch(function (error) {
console.log(error);
});
},
// 递归判断列表,把最后的children设为undefined
getTreeData(data){
for(var i=0;i<data.length;i++){
if(data[i].children.length<1){
// children若为空数组,则将children设为undefined
data[i].children=undefined;
}else {
// children若不为空数组,则继续 递归调用 本方法
this.getTreeData(data[i].children);
}
}
return data;
},
二、使用map方法
// 渲染spu树
Spugoods(){
Tree().then((res)=> {
if(res.data.errmsg == '成功'){
this.categorygoods = this.getTreeData(res.data.data)
}
}).catch(function (error) {
console.log(error);
});
},
getTreeData(datas) {
let data = [];
datas.map((item) => {
if (item.children.length > 0) {
let dadax = {
id: item.id,
label: item.label,
value: item.value,
children: this.getTreeData(item.children),
};
data.push(dadax);
} else {
let dadax = {
id: item.id,
label: item.label,
value: item.value,
};
data.push(dadax);
}
return data;
});
return data;
},