次のモデル:
App.Post = DS.Model.extend
title: DS.attr 'string'
comments: DS.hasMany 'App.Comment'
App.Comment = DS.Model.extend
body: DS.attr 'string'
post: DS.belongsTo 'App.Post'
投稿テンプレートにすべての投稿とすべての投稿コメントを表示しています:
{{#each post in controller}}
{{post.title}}
{{#each comment in post.comments itemController="comment"}}
{{partial 'comment' comment}}
{{this}}
{{/each}}
{{/each}}
ここではコントロール ヘルパーを使用して、コメントごとにコントローラーを取得します。
モデルが投稿から取得されたコメントのフラット化された配列である CommentsController があります。
App.CommentsController = Em.ArrayController.extend
itemController: 'comment'
needs: 'posts'
postsBinding: 'controllers.posts'
comments: (->
comments = []
@get('posts').forEach (post) ->
post.get('comments').forEach (comment) ->
comments.pushObject comment
console.log comments
@set 'model', comments
).observes('posts.length')
App.CommentController = Em.ObjectController.extend()
このコントローラーは、予想どおり CommentController で各レコードを装飾しますが、テンプレートでレンダリングされているコントローラーを再利用する代わりに、新しいコントローラー インスタンスを作成しているようです。同じインスタンスを見つける方法はありますか?