由于要使用emement的tree,但是數(shù)據(jù)格式是固定的守伸,又存在后臺(tái)給的數(shù)據(jù)不符合格式绎秒,所以需要轉(zhuǎn)換一下數(shù)據(jù)。
????????????????????????????????????????以下數(shù)據(jù)僅為2種格式示例含友,不是互相轉(zhuǎn)成的
嵌套結(jié)構(gòu)格式為:
扁平數(shù)據(jù)格式為:
轉(zhuǎn)換成符合element的 tree嵌套類(lèi)型的嵌套結(jié)構(gòu):(調(diào)用方法是? this.toTree(this.data))
由于tree的數(shù)據(jù)可能有需求谓厘,要修改完成后點(diǎn)擊提交,整體將數(shù)據(jù)發(fā)送給后臺(tái)翻默,這樣又需要嵌套結(jié)構(gòu)轉(zhuǎn)換成扁平結(jié)構(gòu)的:(調(diào)用方法是? 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;
? ? ? ? ? ? },