我知道对象值没有索引,但我说我有一个名为foo的对象有5个键,我这样做:
<div ng-repeat="(key,value) in foo">
我的页面最终会有5个div。
我的问题是我如何问Angular,“嘿,哪个div是这个?它是第一个吗?它是第二个吗?请给我一个号码。”我不能使用{{$index}}
因为对象没有索引。我不能使用{{$id}}
,因为它似乎给出一个从5开始的数字,并且总是奇怪的......有时候。我只是想知道在重复一个对象而不是一个数组时ng-repeat
我在哪里。
答案 0 :(得分:2)
重复非数组对象时,您仍然可以使用{{$index}}
。
<强>标记:强>
<div ng-app>
<div ng-controller="testCtrl">
<div ng-repeat="(key, value) in data">
<span>{{$index}} -</span>
<span>{{key}} -</span>
<span>{{value}}</span>
</div>
</div>
</div>
<强>控制器强>
function testCtrl($scope) {
$scope.data = {
prop1: 'a',
prop2: 'b',
prop3: 'c',
prop4: 'c'
}
}
<强>输出:强>
0 - prop1 - a
1 - prop2 - b
2 - prop3 - c
3 - prop4 - c
请参阅此fiddle以供参考
答案 1 :(得分:1)
不幸的是,没有办法在$ index之外的ng-repeat循环中获得你的位置,这只适用于数组。因此,一种可能的解决方案是在使用之前将对象解压缩为数组。如果angular想要一个数组,那就给它一个。