Изменить значение внутри цикла ng-repeat с помощью ng-click
Я хочу изменить значение элемента в цикле ng-repeat, используя функцию.
Это, например, не сработает.
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';
};
Полный пример
1 ответ
Решение
Когда используешь controllerAs
шаблон, вы должны использовать controller
псевдоним при доступе к любой переменной из функции контроллера. Но это должно быть ограничено this
контекст controller
,
<button ng-click="todoList.example(todo)">Click me</button>
расширенный
Также имейте в виду при использовании this
ключевое слово внутри фабричной функции контроллера. Вы должны назначить this
переменная к некоторой переменной, чтобы гарантировать, что this
который вы используете не другой this
, посмотри на this
проблема, связанная с контекстом.
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';
};
});