无法为CollectionView的ItemViewClass定义控制器。

时间:2013-12-30 04:37:18

标签: ember.js

我无法为CollectionView的ItemViewClass定义控制器。

我有一个带有已定义ItemController的ArrayController和一个带有已定义ItemView的CollectionView。

CollectionView使用正确的ItemView呈现每个Item,但无法将ItemController指定为控制器。

以下是一个例子:

App.IndexRoute = Ember.Route.extend
  model: -> 
    [
      Ember.Object.create({name: 'row 1'})
      Ember.Object.create({name: 'row 2'})
      Ember.Object.create({name: 'row 3'})
    ]

App.IndexRowController = Em.ObjectController.extend
  actions:
    test: -> alert "Item Controller"

App.IndexController = Ember.ArrayController.extend
  itemController: 'indexRow'
  actions:
    test: -> alert "Array Controller"

App.IndexView = Ember.CollectionView.extend
  contentBinding: 'controller'
  itemViewClass: Em.View.extend
    templateName: 'row'

### Templates
<script type="text/x-handlebars" id="row">
  <button {{action 'test'}}>
    {{view.content.name}}
  </button>
</script>

在我看来这应该有效吗?有人有主意吗?

这是jsbin

1 个答案:

答案 0 :(得分:0)

这很简单。只需将itemViewClass的controller属性绑定到content属性。

App.IndexView = Ember.CollectionView.extend
  contentBinding: 'controller'
  itemViewClass: Em.View.extend
    controllerBinding: 'content'
    templateName: 'row'