【发布时间】:2013-08-01 03:15:06
【问题描述】:
使用Backbone.Marionette,我想渲染一组项目以及一个标题。
我知道Marionette.CollectionView 没有模板,因为它只呈现ItemViews。
我目前正在使用Marionette.LayoutView,但必须为“列表”区域定义一个额外的 DOM 元素。
还有其他方法可以做到这一点吗?可能没有额外的 DOM 元素?
也许我可以为这个特定区域更改open()?
当前结果:
<div class='collection'>
<h3>Featured</h3>
<div class="list"></div>
</div>
期望的结果:
<div class='collection'>
<h3>List Name</h3>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
渲染代码:
var col = new LCollection([{name: "foo"}, {name: "bar"}]); // Defined earlier, not relevant here
var list = new ListView({collection: col});
var layout = new MyLayout({model: new Backbone.Model({name: "Featured"})});
app.featured.show(layout);
layout.list.show(list);
观看次数:
var ListItemView = Backbone.Marionette.ItemView.extend({
template: '#list-item',
tagName: 'li'
});
var LessonListView = Backbone.Marionette.CollectionView.extend({
tagName: 'ul',
itemView: ListItemView
});
var MyLayout = Backbone.Marionette.Layout.extend({
template: "list-layout",
regions: {
list: '.list'
}
});
模板:
<script type="text/template" id="list-item">
<%= name %>
</script>
<script type="text/template" id="list-layout">
<h3><%= name %></h3>
<div class="list"></div>
</script>
【问题讨论】:
-
为什么不是CompositeView?
标签: javascript backbone.js marionette