由于要使用emement的tree,但是数据格式是固定的,又存在后台给的数据不符合格式,所以需要转换一下数据。
以下数据仅为2种格式示例,不是互相转成的
嵌套结构格式为:
扁平数据格式为:
转换成符合element的 tree嵌套类型的嵌套结构:(调用方法是 this.toTree(this.data))
由于tree的数据可能有需求,要修改完成后点击提交,整体将数据发送给后台,这样又需要嵌套结构转换成扁平结构的:(调用方法是 this.toData(this.data,0))
toTree(data) {
data.forEach(function (item) {
delete item.children;
});
var map = {};
data.forEach(function (item) {
map[item.id] = item;
});
var val = [];
data.forEach(function (item) {
var parent = map[item.pid];
if (parent) {
(parent.children || ( parent.children = [] )).push(item);
} else {
val.push(item);
}
});
return val;
},
toData(data, pid){
var arr = [];
for (var i = 0; i < data.length; i++) {
arr.push({ id: data[i].id, label: data[i].label, pid: pid });
if (data[i].children) arr = arr.concat(this.toData(data[i].children, data[i].id));
}
return arr;
},