我有以下递归 javascript 函数,它循环遍历具有子 ItemViews 又是 CollectionViews 的backbone.marionette CollectionView 的子代:
findViewByCid: function(cid, children){
var col = (arguments.length === 1) ? this.children : children;
if(cid in col){
return col[cid];
}
for(child in col){
var grandChildren = col[child].children;
if(cid in grandChildren){
return grandChildren[cid];
}
if(grandChildren && (!jQuery.isEmptyObject(grandChildren))){
return this.findViewByCid(cid, grandChildren);
}
}
}
我这样称呼它:
var view = DocumentManager.Documents.treeRoot.findViewByCid(model.cid);
问题是这条线:
return this.findViewByCid(cid, grandChildren);
如果我有这样的层次结构
c1
|_c2
|_c3
|_c4
|_c5
然后 te return 语句将导致函数在传递 th3 c2 节点后退出并且永远不会到达 c4 等。
如果我删除 return 语句,则会找到正确的孩子但返回 null。
如何继续解析层次结构并返回值?