In my code i like to pass to arguments to the function specified inside the ng-click attribute.
<div class="shout" ng-repeat="user in users"> <p>{{user.name}}</p> <img src="media/images/delete.png" ng-click="deleteUser({{$index}},{{user._id}})"/> </div>
and in the controller
function deleteUser(index, userId){...}
the parameter index is to remove the user from $scope.user and user._id to remove it from the mongodb. i am a newbee to angular js.
when i tried like this the deleteUser is not getting called. if i pass single argument it works like charm but when i pass more than its not working
If you want to call a function when the onclick event happens, you'll just want the function name plus the parameters. Then if your parameters are a variable (which they look like they are), then you won't want quotes around them.
Another significant difference between ng-click and onclick is the execution context. Code inside an onclick attribute executes against the global window object, while an expression inside of ng-click executes against a specific scope object, typically the scope object representing the model for the current controller.
You don't need {{ }}
while specifying arguments to an event handlers (ng-click
). The correct syntax would be ng-click="deleteUser($index, user._id)
:
<div class="shout" ng-repeat="user in users"> <p>{{user.name}}</p> <img src="media/images/delete.png" ng-click="deleteUser($index, user._id)"/> </div>
Here is a working plunker based on the code you've provided (check the console to see that click handler is working correctly): http://plnkr.co/edit/26A4Rj0FScPXYU7z92E6?p=preview
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With