锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / EasyUI / 树形菜单加载父/子节点
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

树形菜单加载父/子节点


通常表示一个树节点的方式就是在每一个节点存储一个 parentid。 这个也被称为邻接列表模型。 直接加载这些数据到树形菜单(Tree)是不允许的。 但是我们可以在加载树形菜单之前,把它转换为标准标准的树形菜单数据格式。 树插件提供一个 'loadFilter' 选项函数,它可以实现这个功能。

父/子节点数据

[
{"id":1,"parendId":0,"name":"Foods"},
{"id":2,"parentId":1,"name":"Fruits"},
{"id":3,"parentId":1,"name":"Vegetables"},
{"id":4,"parentId":2,"name":"apple"},
{"id":5,"parentId":2,"name":"orange"},
{"id":6,"parentId":3,"name":"tomato"},
{"id":7,"parentId":3,"name":"carrot"},
{"id":8,"parentId":3,"name":"cabbage"},
{"id":9,"parentId":3,"name":"potato"},
{"id":10,"parentId":3,"name":"lettuce"}
]
        

使用 'loadFilter' 创建树形菜单

$('#tt').tree({	
url: 'data/tree6_data.json',	
loadFilter: function(rows){		
return convert(rows);	
}
});
        

转换的实现

function convert(rows){	
function exists(rows, parentId){		
for(var i=0; i<rows.length; i++){			
if (rows[i].id == parentId) return true;		
}		
return false;	
}		
var nodes = [];	
// get the top level nodes	for(var i=0; i<rows.length; i++){		
var row = rows[i];		
if (!exists(rows, row.parentId)){			
nodes.push({				
id:row.id,				
text:row.name			
});		
}	
}		
var toDo = [];	for(var i=0; i<nodes.length; i++){		
toDo.push(nodes[i]);	
}	
while(toDo.length){		
var node = toDo.shift();	
// the parent node		
// get the children nodes		
for(var i=0; i<rows.length; i++){			
var row = rows[i];			
if (row.parentId == node.id){				
var child = {id:row.id,text:row.name};				
if (node.children){					
node.children.push(child);				
} else {					
node.children = [child];				
}				
toDo.push(child);			
}		
}	
}	
return nodes;
}
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内