I want to change a value of an item inside an ng-repeat cycle using a function.
This for example won't work.
HTML
<ul class="unstyled">
<li ng-repeat="todo in todoList.todos">
<span>{{todo.name}}</span>
<button ng-click="example(todo)">Change me</button>
</li>
</ul>
JS
$scope.example = function(v) {
v.name = 'i am different now';
};
Full example
I want to change a value of an item inside an ng-repeat cycle using a function.
This for example won't work.
HTML
<ul class="unstyled">
<li ng-repeat="todo in todoList.todos">
<span>{{todo.name}}</span>
<button ng-click="example(todo)">Change me</button>
</li>
</ul>
JS
$scope.example = function(v) {
v.name = 'i am different now';
};
Full example
http://plnkr.co/edit/kobMJCsj4bvk02sveGdG
Share Improve this question edited Feb 26, 2016 at 11:43 Pankaj Parkar 136k23 gold badges240 silver badges303 bronze badges asked Feb 26, 2016 at 11:28 Claudio Ɯǝıs MulasClaudio Ɯǝıs Mulas 1,1123 gold badges15 silver badges24 bronze badges1 Answer
Reset to default 10When using controllerAs
pattern, you should be using controller
alias while accessing any variable from controller function. But that should be bounded to this
context of controller
.
<button ng-click="todoList.example(todo)">Click me</button>
Demo Here
Extended
Also keep in mind while using this
keyword inside a controller factory function. You should assign this
variable to some variable to ensure that this
which you are using is not other this
, look at this
context related issue.
angular.module('todoApp', [])
.controller('TodoListController', function() {
var toList = this;
toList.todos = [{name:'test 1'},{name:'test 2'}];
toList.example = function(v) {
v.name = 'ora bene';
};
});