重复一个对象时,如何在ng-repeat中获取元素的$ index?

时间:2016-06-21 02:32:38

标签: javascript angularjs angularjs-ng-repeat

我知道对象值没有索引,但我说我有一个名为foo的对象有5个键,我这样做:

<div ng-repeat="(key,value) in foo">

我的页面最终会有5个div。

我的问题是我如何问Angular,“嘿,哪个div是这个?它是第一个吗?它是第二个吗?请给我一个号码。”我不能使用{{$index}}因为对象没有索引。我不能使用{{$id}},因为它似乎给出一个从5开始的数字,并且总是奇怪的......有时候。我只是想知道在重复一个对象而不是一个数组时ng-repeat我在哪里。

2 个答案:

答案 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想要一个数组,那就给它一个。