我正在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."}
]
}
}
}
}
答案 0 :(得分:1)
如果你有一个深层嵌套的结构,并且想要访问其中的每个项目,那么是的,嵌套ng-repeat
s是完全正常的。就像在另一个循环中嵌套for
循环来访问对象的所有级别一样。
当然,如果您的对象非常大,那么您应该考虑不显示所有内容,但这适用于所有大型对象,无论它们是否具有嵌套信息或平面结构。
答案 1 :(得分:1)
这取决于您打算如何处理这些数据 - 如果您不需要任何Angular功能,如双重绑定等,但只是为了渲染数据,你可能应该使用普通的JS(除非你只有少量的对象),因为那些$scope
观察者可能非常沉重和昂贵。
否则,如果您需要Angular的功能和/或只有少数几个对象,请随意使用ng-repeat
。例如,为了优化它,您只能显示适合屏幕的数据,并在需要时延迟加载其余数据。