Coffeescript 使用的控制器实例与;“控制”;帮手

Coffeescript 使用的控制器实例与;“控制”;帮手,coffeescript,ember.js,ember-data,Coffeescript,Ember.js,Ember Data,使用以下型号: 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.

使用以下型号:

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

根据设计,每个
{{control}
助手将创建控制器的新实例。听起来您要查找的内容是由
{{each}
帮助程序提供的

{{#each post in controller}}
  {{post.title}}
  {{each comment in post.comments itemViewClass="App.ItemView" itemController="item"}}
{{/each}}

嗨,马克,谢谢你的回答。实际上,我仍然得到了重复的控制器-可能是我的
comments
方法正在创建这些重复的控制器,而不是查找现有的实例吗?我在
comments
方法中没有看到任何可以做到这一点的东西。也许我不明白你想做什么。您说过“它似乎在创建新的控制器实例,而不是重用模板中呈现的控制器”。创建新控制器实例的确切时间。你怎么知道呢?好的,我刚刚添加了关于如何记录每个实例的代码-基本上只是在模板中或通过
console.log
打印出对象。我得到了CommentController实例,但它们在模板中与CommentsController中的不一样。从CommentsController创建的实例绑定到
posts
数组,该数组是使用余烬数据获取的集合。