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 } );

模板通过 Handlebars 这样丰富。

{{log items}}

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

如果我登录itemsundefined则显示。

视图的模型用于显示其他数据。我的要求:我需要一个ItemView. 没有CollectionCompositeView

有什么建议吗?

4

2 回答 2

1

如果将模型和集合ItemView传递给,则不会在渲染视图之前调用的方法items中设置数组。这就是为什么。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 回答