ng-repeat将索引值传递给函数

时间:2014-07-21 19:41:00

标签: angularjs angularjs-ng-repeat angularjs-ng-click

我需要将一个特定元素的$ index值(用ng-repeat添加)传递给javascript函数。 我的代码示例:

<tr ng-repeat="cells in CouponsList.CellPhones">
<td><button  ng-click="doStuff($index+1)">{{cells.localVendorAddress}}</button></td>

现在我添加了几个按钮,当按下特定按钮时,我需要将它的特定$ index发送到doStuff($ index)函数。 有什么想法吗?

4 个答案:

答案 0 :(得分:8)

请参见此处:http://jsbin.com/yeweh/4/edit

<a href="" ng-repeat="s in students" ng-click="doit($index)">{{s.name}} - {{s.class}} </a>


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



app.controller('firstCtrl', function($scope){

  $scope.doit= function(index){
    alert(index)

  }

  $scope.students = [
           {name: 'Aa_Student', class: 'A_Class'},
           {name: 'Ab_Student', class: 'A_Class'},
           {name: 'Ac_Student', class: 'B_Class'},
           {name: 'Ba_Student', class: 'B_Class'},
           {name: 'Bb_Student', class: 'C_Class'},
           {name: 'Bc_Student', class: 'C_Class'}];
});

答案 1 :(得分:4)

这是一个例子。

http://jsfiddle.net/bdmRs/

你有什么看起来没问题,但你可能会遗漏一些doStuff的函数定义。它必须在$ scope上定义,如下所示:

$scope.doStuff = function(idx){
    alert(idx);
};

答案 2 :(得分:1)

您需要确保在使用ng-click时,在控制器的范围内声明了所调用的函数。

因此,如果你的函数名是doStuff(index),你应该在代码中的某处看到这个定义为(下面对模块和控制器名称做出假设):

var app = angular.module("MyModule", []);
app.controller("MyController", function($scope){

    $scope.doStuff = function(index){
        ... 
    }

}

答案 3 :(得分:0)

KBE,

似乎您的函数doStuff没有在$scope.doStuff的JS文件中声明。就使用$index而言,语法看起来是正确的