Handlebars{{each}}
助手有一个itemController
选项。当指定此选项时,每个对象都将被一个控制器实例包装。所以这样的事情应该有效:
//from your project template
{{#each area in areas itemController="area"}}
<pre>
area is an AreaController: {{area}}
area.content is a reference to the model: {{area.content}}
{{/each}}
有关详细信息,请参阅 [handlebars {{each}} API 文档] ( http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#method_each )
编辑:选项 2
作为使用{{each}}
助手的替代方法,使用 anArrayController
来表示集合并设置它的itemController
属性。例如:
App.AreasController = Ember.ArrayController.extend({
itemController: 'area'
});
App.AreaController = Ember.ObjectController.extend( Ember.AutoSaving, {
bufferedFields: ['title', 'body'],
instaSaveFields: ['postedAt', 'category'],
titleLength: function() {
return this.get('title').length;
}.property('title')
});
// In your project route:
setupController: function(controller, model) {
this.controllerFor('areas').set('content', model.areas);
}
现在,区域控制器将在 AreaController 代理中包装每个项目。
请参阅Ember ArrayController API 文档