在Angular指令中无限嵌套ng-repeat

时间:2015-05-21 07:54:10

标签: javascript angularjs

我有一个包含无限嵌套数据的对象,如下例所示:

[
{
    name: "Foo",
    value: "Bar",
    sub: [
        {
            name: "ABC",
            value: "LLL",
            sub: [
                ...
            ]
        },
        {
            ...
        }
    ]
},
{
    name: "Oof",
    value: "Rab"
    sub: [
        ...
    ]
}
]

每个元素都可以包含sub值,该值包含一个或多个具有相同结构的元素(namevaluesub如果有更多子元素元件)。

现在,我知道如何使用ng-repeat,但只使用一个ng-repeat,我只会获得第一级的元素。如果我在第一个内部做了第二个ng-repeat,我只会从第二个等级获得项目......

由于我不知道会有多少级别,所以我不能在彼此内嵌一些ng-repeat。这就是为什么我正在寻找一种方法来递归遍历整个数据数组并表示Angular指令内部的所有项目(也就是说,在我的HTML代码中使用Angular的指令/属性) )。这是否可以使用Angular(1.3.x)?

1 个答案:

答案 0 :(得分:11)

是的,可以使用内嵌模板

示例:

&FileInfoInternal{}

in html

<script type="text/ng-template" id="namVal">
{{ item.name}}
   <ul ng-if="item.sub">
    <li ng-repeat="item in item.sub" ng-include="'namVal'"></li>
  </ul>
</script>

使用@alexandernst的Plunkr示例更新 http://plnkr.co/edit/dKlrvtYH1IbQXFUEk2Wx?p=preview