7

I need to pass a $index value of a specific element, added with ng-repeat, to a javascript function. My code sample:

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

Now I am adding several buttons and when a specific button is pressed I need to send it's specific $index to the doStuff($index) function. Any idea?

4
  • Hum… what?! What doesn't work with your current code? Commented Jul 21, 2014 at 19:45
  • The problem is that when I press the button it doesn't even go to the function, and do not pass the $index. Commented Jul 21, 2014 at 19:47
  • Add a plunker/jsfiddle showcasing the problem. Commented Jul 21, 2014 at 20:03
  • I'm guessing doStuff() is not on the scope. Commented Jul 21, 2014 at 20:20

4 Answers 4

8

please see here : 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'}];
});
Sign up to request clarification or add additional context in comments.

Comments

4

Here is an example.

http://jsfiddle.net/bdmRs/

What you have there looks ok but you might be missing something with the function definition for doStuff. It must be defined on the $scope like this:

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

Comments

1

You need to make sure when you're using ng-click that the function that is called is declared on the scope in the controller.

Therefore, if your function name is doStuff(index), you should see this defined somewhere in your code as (the below makes assumptions about your module and controller names):

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

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

}

Comments

0

KBE,

it seems that your function doStuff is not declared in your JS file with $scope.doStuff. In term of using the $index the syntax looks correct

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.