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