如何在Ember中为itemController设置itemView?

时间:2014-09-30 21:05:32

标签: ember.js

我已成功实现了一个ArrayController,为它定义了一个ItemController,如下所示:

export default Ember.ArrayController.extend(InboxTab, {
    itemController: 'messages.message-list-item'
});

然后在阵列控制器的模板中我只做

{{#each}}
<li {{action 'someActionFromItemController'}}>{{someComputedPropertyFromItemController}}</li>
{{/each}}

这很好用,我可以处理很多动作并计算每个项目,但是我遇到了将视图与每个项目相关联的困难。文档没有帮助。 itemView的唯一实例在本文中: http://emberjs.com/api/classes/Ember.CollectionView.html#sts=Specifying itemViewClass

这里的例子似乎围绕着向模板添加视图并从那里指定内容,我不确定这是如何适用于我的方式。

2 个答案:

答案 0 :(得分:0)

你可以采用不同的方式:

{{#each itemController='messages.message-list-item'}}
 {{#view your-view}}
   {{action}}{{computed property from view/controller}}
 {{/view}}
{{/each}}

在循环中指定项目控制器并在视图中包装动作和属性 - 这意味着也可以在视图中调用或设置其中任何一个。

答案 1 :(得分:0)

我认为最好的方法是使用itemViewClass,有关详细信息,请参阅api

{{#each message itemController='messageListItem' itemViewClass='messageListItem'}} 
  {{! Assumes you have view defined in an App.MessageListItemView defined in your JavaScript}} 
  {{action}}
{{/each}}