AngularJS 增加 id 属性的值

AngularJS increment value for id attributes

我有一些 html 看起来像这样:

<tr ng-repeat="x in y">
    <td>
         <div ng-attr-id="{{getId()}}"></div>
    </td>
    <td>
         <div ng-attr-id="{{getId()}}"></div>
    </td>
    <td>
         <div ng-attr-id="{{getId()}}"></div>
    </td>
</tr>

我想要一个 ID,第一个 <td> 元素从 1 开始,然后每个 <td> 元素递增一个。

通过在控制器中执行:

$scope.getId = function () {
    counter++;
    return counter;
}

我明白了

10 $digest() iterations reached. Aborting!

您可以使用 $index 这样做:

<tr ng-repeat="x in y track by $index">
  <td>
    <div ng-attr-id="{{$index + 1}}"></div>
  </td>
</tr>

对于嵌套循环,您可以定义一个新的轨道值并与 $index 组合,或者对于静态三个元素,您可以这样写:

<tr ng-repeat="x in y track by $index">
  <td>
    <div ng-attr-id="{{$index*3 + 1}}"></div>
  </td>
  <td>
    <div ng-attr-id="{{$index*3 + 2}}"></div>
  </td>
  <td>
    <div ng-attr-id="{{$index*3 + 3}}"></div>
  </td>
</tr>

您可以使用 ngRepeat 指令的 $index 变量。

$index: iterator offset of the repeated element (0..length-1)

ngRepeat

所以,你可以这样做:

<div ng-attr-id="{{$index + 1}}"></div>

我们用$index + 1从1开始