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>

aで定義されたプロパティはApp.CommentController、テンプレートでは検出されません。

paramEmber.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>

最初に、この期限切れ機能を有効にする必要があります。残り火がロードされる前にこれを置いてください:

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

また、コメントのコントローラーをシングルトンにしないように指定する必要があります。そうしないと、すべてのコメントビューに対してインスタンス化されるコントローラーが1つだけになります。

// 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 に答える