最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Change a value inside ng-repeat cycle with ng-click - Stack Overflow

programmeradmin2浏览0评论

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 badges
Add a ment  | 

1 Answer 1

Reset to default 10

When 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';
    };
  });
发布评论

评论列表(0)

  1. 暂无评论