1

問題をより適切に明らかにするために、フィドルを用意しました。

http://jsfiddle.net/Xbxwr/

コード:

App = Ember.Application.create();

App.MyView = Ember.View.extend({ templateName: "MyView" });

App.myCollectionView = Ember.CollectionView.create({
    itemViewClass: App.MyView,
    content: [
        Ember.Object.create({ name: "World" }),
        Ember.Object.create({ name: "Foo" }),
        Ember.Object.create({ name: "Bar" })
    ]
});

$(function() { App.initialize(); });

意見 :

<script type="text/x-handlebars">
   {{collection App.myCollectionView}}
</script>

<script type="text/x-handlebars" data-template-name="MyView">
  <h1>Hello, {{name}}!</h1>
</script>​

ここで何が間違っていますか?

4

1 に答える 1

1

まず、{{collection}}ヘルパーにはインスタンスEmber.Viewではなくクラスが必要です。Ember.Viewに置き換える必要がEmber.CollectionView.create()ありEmber.CollectionView.extendます。

次に、View context changes{{name}}に従って{{view.content.name}}、テンプレートを に置き換える必要があります。

更新された JSFiddle は次のとおりです: http://jsfiddle.net/AzV4f/

編集

書き込み{{name}}は を意味context.nameし、コンテキストは通常​​コントローラーです (ソースコードを参照)。、は単なるプロキシEmber.ObjectControllerEmber.ArrayControllerあるため、これらのプロパティはコンテンツに委譲されます ( ObjectProxy ソース コードを参照)。

のプロパティが{{view.content.name}}必要なので、と書く必要があります。nameview.content

@tomdaleがこの要点コメントで言ったように:

アイテム ビューのテンプレート内で、アイテム ビューviewview.content参照し、コンテンツ配列内のアイテムを参照する必要があります。

また、次のように指定せずに、コントローラーを使用してJSFiddleを表示できますview

于 2012-08-30T09:40:31.613 に答える