重复语句 ng-repeat

本节将讲述如何使用ng-repeat对一个列表的数据进行遍历并显示出来。

首先,我们准备如下的数据。这是一个包括三个objectarray

  1. $scope.list = [
  2. {
  3. name: "Harry"
  4. },
  5. {
  6. name: "Tom"
  7. },
  8. {
  9. name: "Jerry"
  10. }
  11. ];

下面,我们将这些数据显示在HTML的一个表格中:

  1. <table>
  2. <tr ng-repeat="x in list">
  3. <td>{{x.name}}</td>
  4. </tr>
  5. </table>

运行结果

图4-7 ng-repeat运行结果

为了更好的查看具体的运行效果,我们可以查看下最终生成的HTML代码。

图4-8 ng-repeat运行结果(HTML)

从源代码可以看出来,ng-repeat直接将其所在的<tr>元素根据list的长度复制了3次。并将相应的数据填充了进去。

$index

在实际的使用场景中,如果我们使用一个表格来管理信息,那么可能表格的每一行都会有一些对应的操作功能(如编辑、删除)等。那么,我们如何在ng-repeat中知道是哪一行被点击了呢?

AngularJS提供了$index这个字段让我们实现这个功能。

下面,我们来看看使用$index的例子:

app.js中,对onClick函数进行一些改造,让他能够获取传入的数据:

  1. $scope.onClick = function (index) {
  2. alert("点击了第"+index+"行的按钮");
  3. };

将刚才的表格也进行一些改造:

  1. <table>
  2. <tr ng-repeat="x in list">
  3. <td>{{x.name}}</td>
  4. <td><input type="button" value="我是第{{$index}}行的按钮"
  5. ng-click="onClick($index)"></td>
  6. </tr>
  7. </table>

刷新页面后,让我们点击第一个按钮,效果如下:

图4-8 $index字段应用效果

这样,我们就可以明确的知道用户点击了哪一行了!

另外,值得注意的是,$index是从0开始计算的哟!