私は次の再帰的な JavaScript 関数を持っています。これは backbone.marionette CollectionView の子をループしています。これには、CollectionView である子 ItemView があります。
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
次に、return ステートメントにより、th3 c2 ノードを通過した後に関数が終了し、c4 などに到達しません。
return ステートメントを削除すると、正しい子が見つかりますが、null が返されます。
階層の解析を続行して値を返すにはどうすればよいですか?