ExtJS: 深度查找树节点
Wednesday, 10. June 2009, 01:24:37
function findChildRecursively(rootNode, key, value) {
var nodes = rootNode.childNodes;
for(var i = 0; i < nodes.length; i++) {
if(nodes[i].attributes[key] == value){
return nodes[i];
} else {
if(!nodes[i].isLeaf()) {
// 查找结果不包含 Folder 的情况下
continue;
}
if(!nodes[i].isLoaded()) {
//加载子节点,AsyncTreeNode 需要,TreeNode 则不需
nodes[i].reload();
}
if(node = findChildRecursively(nodes[i], key, value)) {
return node;
}
}
}
return null;
}
方法二: 利用现成方法 cascade
var node = null;
rootNode.cascade(function(n) {
if(n.isLeaf() && !n.isLoaded()) {
n.reload();
return true;
}
if(n.attributes[key] == value) {
node = n;
return false;
}
return true;
});








