深度优先搜索使用嵌套的ng-Repeat

时间:2014-11-26 00:19:47

标签: html json angularjs object depth-first-search

我有一个带有变量键名的对象,它也包含对象。我想对对象进行深度优先搜索(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)
      });
});

1 个答案:

答案 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