如何在Ember中为itemController设置itemView



我已经成功地实现了一个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=SpecifyingitemViewClass

这里的例子似乎围绕着将视图添加到模板中并从中指定内容展开,我不确定这如何应用于我的操作方式

一种不同的方法:

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

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

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

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

最新更新