次のように、コレクション ビューとモデル ビューがあります。
EventListView
|-- EventView
EventListView
EventViews
1 対多の関係で多数を表示する必要があります。アンダースコア_.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 %>
そして、それは render メソッドです:
// 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;
}
私が抱えている問題は、テンプレートに HTML しか含まれていないことですが、バックボーン ビューがサポートする,および属性eventView.$el.html()
を利用する必要があります。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
。