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}}
ヘルパーを使用する代わりに、 を使用ArrayController
してコレクションを表し、そのプロパティを設定し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 ドキュメントを参照してください