5

CollectionViewアイテムのリストを使用して を作成し、CollectionViewtemplateNameプロパティで指定されたテンプレートにレンダリングしようとしています。しかし、私はそれを機能させることができません。

次のようになります。

App = Ember.Application.create({});

App.ItemView = Ember.View.extend({
    templateName: 'item_template',
    tagName: 'li'
});

App.CollectionViewTest = Ember.CollectionView.extend({
    templateName: 'collection_template', 
    itemViewClass: App.ItemView,

    content: [
        { title: 'Item 1' },
        { title: 'Item 2' }
    ]
});

次のようなテンプレートを使用します。

<script type="text/x-handlebars" data-template-name="application">
    <h1>Testing CollectionView TemplateName</h1>
    {{collection App.CollectionViewTest}}
</script>

<script type="text/x-handlebars" data-template-name="collection_template">
    <h2>The CollectionView Template</h2>
    <ul>
        {{outlet}}
    </ul>
</script>

<script type="text/x-handlebars" data-template-name="item_template">
    {{title}}
</script>

そのままでは、に変更し<h2>ない限りレンダリングされませんが、明らかに、リスト項目はありません。App.CollectionViewTestEmber.View

これはバグですか?または私は何かを逃していますか?

-- ここに、コードの js フィドルがあります: http://jsfiddle.net/S46vH/

4

1 に答える 1

4

Ember.CollectionViewはEmber.ContainerViewのサブクラスであるため、独自のテンプレートはありません。

API ドキュメントから:

コンテナー ビューの template、templateName、defaultTemplate、layout、layoutName、または defaultLayout プロパティでは、テンプレートまたはレイアウトがレンダリングされません。Ember.ContainerView の DOM 表現の HTML コンテンツは、その子ビューのレンダリングされた HTML のみになります。

これを機能させるには、collection_templateマークアップをアプリケーション テンプレートに移動するか、パーシャルにすることができます。次に{{outlet}}{{collection App.CollectionViewTest}}

于 2013-07-08T22:47:00.803 に答える