我有一个集合视图和一个模型视图,如下所示:
EventListView
|-- EventView
EventListView
必须EventViews
以一对多的关系显示许多。我正在使用下划线_.template()
函数来构建我的视图模板。
这是我的EventView
模板:
<h1>
<span class="date"><%= prefix %><%= dateString %></span>
<span class="title"><%= title %></span>
</h1>
<div class="caption"><%= caption %></div>
我的EventView
渲染方法:
render: function () {
this.$el.html(this.template(this.model.attributes));
return this;
}
这是我的EventListView
模板:
<h1>
<% if(typeof(title) != "undefined") { print(title) } %>
</h1>
<%= events %>
它的渲染方法:
// this._EventViews is an array of eventView objects
render: function() {
var templateData = {
events: _.reduce(this._EventViews, function(memo, eventView) { return memo + eventView.$el.html(); }, "")
}
this.$el.html(this.template(templateData));
return this;
}
我遇到的问题是eventView.$el.html()
模板中只包含 HTML,但我需要利用 Backbone 视图支持的tagName
,className
和id
属性。
考虑一下我是否这样设置EventView
:
return Backbone.View.extend({
model: EventModel
, tagName: 'article'
, className: 'event'
, template: _.template(templateText)
, render: function () {
this.$el.html(this.template(this.model.attributes));
return this;
}
});
我想插入:
<article class="event" id="someID342">
<h1>
<span class="date">01/02/2010</span>
<span class="title"></span>
<div class="caption></div>
</h1>
</article>
但eventView.$el
返回:
<h1>
<span class="date">01/02/2010</span>
<span class="title"></span>
<div class="caption></div>
</h1>
如何插入整个eventView
元素?不仅仅是它innerHTML
。