1

所以我的模型是这样设置的:

App.Post = DS.Model.extend
  comments: DS.hasMany 'App.Comment'

App.Comment = DS.Model.extend
  post: DS.belongsTo 'App.Post'

我正在尝试创建一个显示所有帖子和所有评论的视图,但我需要装饰评论对象。

这是我想做的,但无济于事:

<ul>
  {{#each post in controller}}
    <li>{{post.title}}</li>
    <ol>
      {{#each comment in post.comments itemController="comment"}}
        <li>{{comment.body}}</li>
      {{/each}}
    </ol>
  {{/each}}
</ul>

App.CommentController模板根本找不到在 a 中定义的属性。

我怀疑Ember.OrderedSet没有实现itemController参数 - 是否有解决方法?

4

1 回答 1

2

您需要使用新的过期控制标签。这将加载指定类型的视图和控制器:

<ul>
  {{#each post in controller}}
    <li>{{post.title}}</li>
    <ol>
      {{#each comment in post.comments}}
        {{ control "comment" comment }}
      {{/each}}
    </ol>
  {{/each}}
</ul>

您需要先启用此过期功能。在加载 ember 之前放置:

<script type='application/javascript'>
    ENV = {
        EXPERIMENTAL_CONTROL_HELPER: true
    };
</script>

此外,您需要指定评论控制器不应是单例,否则将只有一个控制器为所有评论视图实例化:

// this is needed to use control handlebars template properly per
// https://github.com/emberjs/ember.js/issues/1990
App.register('controller:comment', App.CommentController, {singleton: false });
于 2013-03-12T17:35:04.653 回答