如果放入ngRepeat,ngClick是否会将点击处理程序附加到每个项目

时间:2015-05-29 15:49:13

标签: angularjs

我在表格中显示大约500多行数据,并在每一行上使用ngClick显示有关每一行的更多信息:

        <tr ng-repeat="row in displayData.rows track by $index">
          <td><span ng-click="orderDetails(row.orderNumber)" class="glyphicon glyphicon-plus"></span></td><td>{{row.orderNumber}}</td><td>{{row.shiptoCompany}}</td><td>{{row.orderTime}}</td><td>{{row.clientID}}</td><td>{{row.shiptoAttention}}</td><td>{{row.shipMethod}}</td><td>{{row.whenLastShipped}}</td>
        </tr>

使用vanilla JS,我只需在整个表上放置一个click处理程序,并使用该事件来确定单击了哪一行。有没有办法用Angular做同样的事情,或者Angular已经有效地做了吗?如果我正在做的事情和/或有更好的方法来获得相同的结果,我不想在页面上附加500多个点击处理程序。

1 个答案:

答案 0 :(得分:3)

您可以在整个表格中使用单个ng-click而不是每行http://jsfiddle.net/x2jjdo88/1/

HTML:

<body ng-app="myApp">
    <div ng-controller="MyController">
        <table ng-click="tableClick($event)">
            <tr ng-repeat="row in rows track by $index" style="background:#666">
                <td>{{row}}</td>
            </tr>
        </table>
    </div>

</body>

JS:

var app = angular.module('myApp',[]);

app.controller('MyController', function($scope)
{
   $scope.rows = [1,2,3,4,5];
   $scope.tableClick = function($event)
   {
       var scope = angular.element($event.target).scope();
       console.log(scope.$index);
   };
});