鉴于此控制器:
ItemController= Ember.Controller.extend({
subItems: Ember.ArrayController.create({
content: App.store.find(App.models.SubItem),
sortProperties: ['name']
}),
currentItemIdBinding: 'App.router.mainController.currentItemId',
item: function() {
return App.store.find(App.models.SubItem, this.get('currentItemId'));
}.property('currentItemId'),
currentSubItems: function () {
return this.get('subItems.content')
.filterProperty('item_id', this.get('item.id'));
}.property('item', 'subItems.@each')
});
以及模板中的每个块:
{{#each subItem in currentSubItems}}
{{view App.SubItemView}}
{{/each}}
如何获得SubItemView控制器中“subItem”的访问权限?
修改
我偶然发现了这样做的方法。如果我稍微更改每个块:{{#each subItem in currentSubItems}}
{{view App.SubItemView subItemBinding="subItem"}}
{{/each}}
并将一个init方法添加到SubItemView类:
init: function() {
this._super();
this.set('controller', App.SubItemController.create({
subItem: this.get('subItem')
}));
})
我可以访问控制器中的subItem。然而,这比我可以计算的更多级别感觉不对。
答案 0 :(得分:0)
有趣......在浏览ember.js时,我发现了这一点:https://stackoverflow.com/a/14251255/489116。它与您提出的问题略有不同,但可以解决问题:如果我正确读取它,它会自动将subItemController与每个subItemView和subItem相关联,而不必传递模型。虽然尚未发布。我还是希望看到其他解决方案!
答案 1 :(得分:0)
如何使用Ember.CollectionView
代替{{each}}
帮助器,请参阅以下内容:
App.SubItemsView = Ember.CollectionView.extend({
contentBinding: "controller.currentSubItems",
itemViewClass: Ember.View.extend({
templateName: "theTemplateYouUsedForSubItemViewInYourQuestion",
controller: function(){
App.SubItemController.create({subItem: this.get("content")});
}.property()
})
})
在车把中使用如下
{{collection App.SubItemsView}}