可以一次又一次地使用ng-repeat吗?

时间:2016-01-30 12:11:52

标签: javascript angularjs json

我正在AngularJS中构建一个应用程序,我有非常复杂的JSON文件,它有很多子数组和对象。所以我的问题是:为了从JSON访问数据,可以一次又一次地使用ng-repeat吗?

<div ng-repeat="parent in parents">
      <div ng-repeat="child in parent">
           <div ng-repeat="grandChild in child">
                {{grandChild.name}}
           </div>
      </div>
 </div>

-----或者AngularJS中有一些循环方法

-----或者我们必须使用旧的JavaScript for循环

示例数据

{"data":
    {
        "categories":
        {
            "articles":
            {
                "bdh":
                [
                    {"id":1, "name":"bdh article 1", "body":"this is bdh article 1 body."},
                    {"id":2, "name":"bdh article 2", "body":"this is bdh article 2 body."}
                ],
                "hadoop":
                [
                    {"id":3, "name":"hadoop article 1", "body":"this is hadoop article 1 body."},
                    {"id":4, "name":"hadoop article 2", "body":"this is hadoop article 2 body."}
                ]
            },
            "videos":
            {
                "bdh Videos":
                [
                    {"id":5, "name":"bdh videos 1", "body":"this is bdh videos 1 body."},
                    {"id":6, "name":"bdh videos 2", "body":"this is bdh videos 2 body."}
                ],
                "hadoop Videos":
                [
                    {"id":7, "name":"hadoop videos 1", "body":"this is hadoop videos 1 body."},
                    {"id":8, "name":"hadoop videos 2", "body":"this is hadoop videos 2 body."}
                ]
            }   
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果你有一个深层嵌套的结构,并且想要访问其中的每个项目,那么是的,嵌套ng-repeat s是完全正常的。就像在另一个循环中嵌套for循环来访问对象的所有级别一样。

当然,如果您的对象非常大,那么您应该考虑不显示所有内容,但这适用于所有大型对象,无论它们是否具有嵌套信息或平面结构。

答案 1 :(得分:1)

这取决于您打算如何处理这些数据 - 如果您不需要任何Angular功能,如双重绑定等,但只是为了渲染数据,你可能应该使用普通的JS(除非你只有少量的对象),因为那些$scope观察者可能非常沉重和昂贵。

否则,如果您需要Angular的功能和/或只有少数几个对象,请随意使用ng-repeat。例如,为了优化它,您只能显示适合屏幕的数据,并在需要时延迟加载其余数据。