我有一个带有变量键名的对象,它也包含对象。我想对对象进行深度优先搜索(DFS)。
示例对象:
object = { "var1" : {
"var2a" : {
"someKey" : someValue
},
"var2b" : {
"someKey" : someOtherValue
}}}
我对DFS的尝试如下(不起作用):
<div ng-repeat = "child in object">
<div ng-repeat = "grandChild in child ">
<td> {{grandChild.aKey}}</td>
</div>
</div>
我已经看到了其他人in this previous question的方法,但由于变量键名称,这对我不起作用。
此外,物体的深度是已知的。
如果我们使用此代码段来检查child
的结果是什么:
<div ng-repeat = "child in object">
<td> {{child}}</td>
<div ng-repeat = "grandChild in child ">
<td> {{grandChild.aKey}}</td>
</div>
</div>
我们得到child
的第一个实例:
{"var2a" : {
"someKey" : someValue
}}
编辑:是否可以利用将输出到控制台的JavaScript DFS片段?
angular.forEach(object,function(child,value){
angular.forEach(child,function(grandChild,value){
console.log(grandChild.someKey)
});
});
答案 0 :(得分:1)
因此,事实证明使用嵌套的ng-Repeats实际上不可能。它必须在JavaScript中完成。这实际上符合'Angular JS'的思路,即保持逻辑不在HTML文件中。
以下是JavaScript中的DFS:
angular.forEach(object,function(key,value){
if (value!='$id'){
angular.forEach(key,function(keyChild,valueChild){
console.log(valueChild)
}
});
});
这将返回"someKey" : someOtherValue
和"someKey" : someOtherValue