0

内でコレクションをレンダリングするのにいくつか問題がありますItemView。Form Marionette doc ( Rendering A Collection In An ItemView )には、コレクションをに渡すことができItemView、テンプレート内でitemsそのように繰り返すことができると書かれています。

<script id="some-template" type="text/html">
  <ul>
    <% _.each(items, function(item){ %>
    <li> <%= item.someAttribute %> </li>
    <% }); %>
  </ul>
</script>

しかし、私の場合はうまくいかないようです。

これは私が使用しているコードです。

var report1 = new ReportModel({ name: "David", report:"1" });
var report2 = new ReportModel({ name: "Mark", report:"2" });
var report3 = new ReportModel({ name: "Jack",  report:"3" });

var reportCollection = new ReportCollection( [report1, report2, report3] );

// create the view and inject somewhere, code skipped for brevity here
new CollectView( { model: reportModel, collection: reportCollection } );

テンプレートは、このようにハンドルバーによって強化されます。

{{log items}}

{{#each items}}
<div data-role="drop-class"><span>{{this.name}}</span></div>
{{/each}}

ログインするitemsと、undefinedが表示されます。

ビューのモデルは、他のデータを表示するために使用されます。私の要件: が必要ItemViewです。いいえCollectionまたはCompositeView

何かアドバイス?

4

2 に答える 2

1

モデルとコレクションの両方を に渡すと、ビューをレンダリングする前に呼び出されたメソッドItemViewitems配列が設定されません。だからです。serializeDataitemsundefined

このitems場合に利用可能にするには、serializeDataメソッドを適切にオーバーライドする必要があります。

( Marionette の GitHub にある同じ問題の回答も参照してください。)

于 2014-05-17T08:13:55.513 に答える
0

ビューはモデルとコレクションを知る必要はありません。

試す :

// create the view and inject somewhere, code skipped for brevity here
new CollectView( { collection: reportCollection } );
于 2013-09-30T14:56:29.493 に答える