Emberjs CollectionView对项目控制器的操作

时间:2014-04-13 20:14:09

标签: javascript model-view-controller ember.js

我无法针对集合视图中列出的项目向每个单独的项目控制器触发操作。到目前为止,我已经创建了以下

App.ItemsController = Ember.ArrayController.extend({
  itemController: 'item',
  sortAscending: true
});

App.ItemController = Ember.ObjectController.extend({
  isDrawVisible: false,
  actions: {
    toggleDraw: function() {
      this.toggleProperty('isDrawVisible')
    }
  }
});

App.ItemsView = Ember.CollectionView.extend({
  itemViewClass: App.ItemView,
  contentBinding: 'controller',
  tagName: 'ul'
});

App.ItemView = Ember.View.extend({
  controllerBinding: 'content',
  templateName: 'item',
  tagName: 'li'
});

我的模板文件就是这样

{{#with view.content}}
  <a class="btn btn-lg btn-drill left bottom" {{action 'toggleDraw'}}>+</a>
{{/with}}

在ember检查器中,列表中的每个项目都被赋予了正确的控制器,但我似乎无法触发ItemController上的toggleDraw操作

更新

发现该操作正在被触发,但控制台中出现错误,说明每次单击锚元素时都没有处理任何操作。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

您需要在模板中指定项目控制器,如下所示:

{{#with view.content controller='item'}}
  <a class="btn btn-lg btn-drill left bottom" {{action 'toggleDraw'}}>+</a>
{{/with}}

请参阅controller帮助文档here中的with选项。