本人使用的是eleme的树组件进行的数据渲染
Element - The world's most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.cn/#/zh-CN/component/tree
var treeData = {};
$.ajax({
url: "/getTreeData",
data : {"start":0,"limit":100},
dataType : "json",
async: false, //必须同步,否则数据渲染不了
success : function(response) {
treeData.data = toTree(response.results);
S("treepanelid").lazy = false;
S("treepanelid").loadData("",a);
},
error : function(json) {
}
});
})
function toTree(results){
var b=[];
results.map(((item,index)=>{
b.push(Object.assign({},item,{children:[]})); //所有节点数据添加子节点数组
}))
var rootData = [{menu_id: 0,text: 'root',children:[]}]; //根节点数据
test ( rootData, b);
return rootData;
}
function test(a,b){
for(var i=0;i<a.length;i++){
for(var j=0;j<b.length;j++){
if(a[i].menu_id==b[j].parent){ //如果节点a的meun_id等于节点b的parent
a[i].children.push(b[j]); //将节点b加入到节点a的子节点属性中
}
}
test(a[i].children,b); //使用递归将子节点加入父节点
}
}