我在使用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
。
有什么建议吗?
答案 0 :(得分:1)
如果将模型和集合的 传递给ItemView
,则在呈现视图之前,items
数组未在调用的serializeData
method中设置。这就是为什么items
是undefined
。
要在这种情况下使items
可用,必须适当地覆盖serializeData
方法。
答案 1 :(得分:0)
View不需要知道模型和集合。
尝试:
// create the view and inject somewhere, code skipped for brevity here
new CollectView( { collection: reportCollection } );