AngularJS使用ng-repeat迭代多层数组
AngularJS iterating through a multi-layered array with ng-repeat
我对ng-repeat指令有一个问题,当它涉及到迭代多个层的数组。很像Json对象,但又不完全像。
为了构建数组,我使用如下代码:$scope.dailyData = []
$scope.dailyData[0] = []
$scope.dailyData[0].push([{"today":null,"day2":1,"day3":null,"day4":null,"day5":null,"day6":null,"day7":null,"title":"Queries Built","id":null}])
这只是程序实际操作的一个示例,我这样做是出于一个特定的原因,这个原因可能与问题相关,也可能与问题无关。
输出的数组如下所示。
[[[{"title":"Queries Built","today":null,"day2":1,"day3":null,"day4":null,"id":null}]]]
有三个数组,中间有一个对象。问题是我似乎无法让ng-repeat从对象中提取数据。
我希望它像这样输出:
| Title | Today | Yesterday |
| Queries Built | null | 1 |
但是我在ng-repeat上试过的所有东西似乎都不起作用。一个这样的例子:
<div ng-repeat="row in dailyData[0]">
<tr>
<td>{{row[0]["title"]}}</td>
<td>{{row["today"]}}</td>
<td>{{row["day2"]}}</td>
<td>{{row["day3"]}}</td>
<td>{{row["day4"]}}</td>
</tr>
</div>
这里的第一行是一个不同于其他的方法,它们都不起作用。
这里有一个小提琴:https://jsfiddle.net/rms9dv8j/2/
主要问题是您在表格中间使用了<DIV>
标记,这可能就是浏览器没有呈现任何内容的原因。
In this fiddle:
https://jsfiddle.net/5ox7Ledw/<div ng-repeat="row in dailyData[0][0]">
<tr>
<td>{{row[0]["title"]}}</td>
我简化了数据并将ng-repeat移动到TR元素中,同时也删除了错误的DIV
<tr ng-repeat="row in dailyData">
<td>{{row.title}}</td>
我认为你需要重新构造你的数据,以便它是一个更好的格式。
你需要做一个嵌套循环,类似于我在这个plnkr: http://plnkr.co/edit/CqUHwj?p=info
<div ng-app="module" ng-controller="ctrl">
<div ng-repeat="row in array">
{{row.name}}
<div ng-repeat="row2 in row.array2">
{{row2.name}}
</div>
</div>
</div>
更多有用的信息可以在这篇文章中找到:
嵌套ng-repeat相关文章:
- 使用嵌入式数组迭代JSON
- 节点.js异步数组迭代
- jQuery 数组迭代
- Javascript:(ES5)数组迭代的权威指南
- Javascript 数组迭代
- JavaScript 数组迭代方向
- 是否可以在 ES6 Set 实例上使用数组迭代方法
- Javascript 中的数组迭代问题
- javascript 2D数组迭代返回未定义的函数参数
- 返回数组迭代
- 这对于数组元素上的简单数组迭代操作来说是最有效的
- 数组迭代陷阱
- JavaScript数组-迭代问题
- JavaScript For循环数组迭代问题-使用一个循环与两个循环
- 如何克服javascript数组迭代跳过记录/秒
- 将数组迭代到自定义网格中
- 在Node.JS中跨数组迭代save
- 数据可见性的数组迭代- javascript
- 在数组迭代中迭代对象键
- 使用数组迭代对象属性