【问题标题】:How do I get the $index of element in an ng-repeat when repeating over an object?重复对象时如何获取 ng-repeat 中元素的 $index?
【发布时间】:2016-06-21 11:39:22
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果您只想显示编号,请使用&lt;ol&gt;,浏览器将进行编号。否则,您需要索引的用例是什么?
  • 你能举一个你的数据的例子吗?
  • @BonMacalindong 为什么会有帮助?除了它是一个对象,还需要知道什么?
  • 使用$index 对我来说似乎工作得很好,甚至可以追溯到 Angular 1.2.1 版。 jsFiddle demo.
  • 您是否只是假设$index 对某个对象不起作用,或者您是否对其进行了测试并发现它实际上不起作用? Here is the place in the source 其中$index 是在作用域上定义的,无论被重复的集合是数组还是对象。

标签: javascript angularjs angularjs-ng-repeat


【解决方案1】:

在重复非数组对象时,您仍然可以使用{{$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 以供参考

【讨论】:

    【解决方案2】:

    很遗憾,没有,除了 $index 之外,没有其他方法可以让您在 ng-repeat 循环中获得位置,并且仅适用于数组。因此,一种可能的解决方案是在使用之前将对象解压缩到数组中。如果 Angular 想要一个数组,给它一个。

    【讨论】:

    • 从我的测试和查看源代码(见上面我的 cmets)看来,你说$index 只能用于数组是不正确的。
    • 它对我不起作用,也从来没有。我最近遇到了同样的问题,这就是我在这里的原因。与对象一起使用时,我从未见过 $index 起作用。只有数组。
    猜你喜欢
    • 2016-03-15
    • 2013-04-05
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多