我需要将一个特定元素的$ 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)函数。 有什么想法吗?
答案 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)
这是一个例子。
你有什么看起来没问题,但你可能会遗漏一些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
而言,语法看起来是正确的