在AngularJS中,如何使用带有数字索引的ng-repeat循环对象?

时间:2014-07-15 05:25:24

标签: angularjs

文档:

https://docs.angularjs.org/api/ng/directive/ngRepeat

如果我在迭代一个对象,那么$ index将是一个关键。如何检索顺序数字索引(0,1,2 ...)? (假设我仍然希望使用对象而不是数组)

2 个答案:

答案 0 :(得分:1)

你可以{ng}重复迭代$index。见下面的小提琴。

http://jsfiddle.net/NFNvc/24/

答案 1 :(得分:1)

考虑你的对象是

$scope.object = {};
$scope.object.person1 = {name: "tom", age:"5"};
$scope.object.person2 = {name: "jerry", age: "5"};
$scope.object.person3 = {name: "sparky", age: "3"};

现在,您希望在表格中显示对象中的人物。

<table>
    <thead>
        <th>Id</th>
        <th>Name</th>
        <th>Age</th>
    </thead>

    <tbody>
        <tr ng-repeat="person in object">
            <td>{{$index+1}}</td>
            <td>{{person.name}}</td>
            <td>{{person.age}}</td>
        </tr>
    </tbody>
</table>

你的结果将是

Id Name   Age
1  tom    5
2  jerry  5
3  sparky 3

有时您可能会使用ng-repeat遇到重复错误[ngRepeat:Dupes] 。如果数组中有重复的条目,则会发生此错误。例如

$scope.store = ["apple", "milk", "carrots", "apple"];
<li ng-repeat="item in store">{{item}}</li>
苹果出现两次,所以它重复一次。您可以在https://docs.angularjs.org/error/ngRepeat/dupes

了解有关错误的更多信息

为了避免错误,你告诉ng-repeat使用$ index通过数字索引跟踪数组中的元素,这些索引始终是唯一的。

<li ng-repeat="item in store track by $index">{{item}}</li>