使用Backbone.Marionette
,我想呈现一个项目的集合以及一个标题。
我知道它Marionette.CollectionView
没有模板,因为它只呈现ItemView
s。
我目前正在使用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>