0

使用以下型号:

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

4

1 回答 1

0

按照设计,每个{{control}}助手都会创建控制器的新实例。听起来您正在寻找的东西是由{{each}}助手提供的。

{{#each post in controller}}
  {{post.title}}
  {{each comment in post.comments itemViewClass="App.ItemView" itemController="item"}}
{{/each}}
于 2013-03-14T15:21:33.377 回答