使用以下型号:
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 装饰每条记录,但是它似乎是在创建新的控制器实例,而不是重用正在模板中呈现的控制器。有没有办法找到相同的实例?