我有模型發佈和收集帖子。並且要用<select id="multi" multiple="multiple">
中的所有帖子列表製作表格。所以,我必須做出覽我#multi內部渲染眼前這個模板:Backbone.js關閉由div中的包裝渲染
<option value=""><%= title %></option>
但最後我把它包裹着股利。有沒有解決方案不包裝這個模板<div>
?
我有模型發佈和收集帖子。並且要用<select id="multi" multiple="multiple">
中的所有帖子列表製作表格。所以,我必須做出覽我#multi內部渲染眼前這個模板:Backbone.js關閉由div中的包裝渲染
<option value=""><%= title %></option>
但最後我把它包裹着股利。有沒有解決方案不包裝這個模板<div>
?
如果您沒有爲視圖(在類中或實例化過程中)定義el
(或tagName),視圖將放置在div標籤內。 http://documentcloud.github.com/backbone/#View-el
var PostView = Backbone.View.extend({
tagName: 'option'
});
UPDATE
開始v0.9.0,骨幹有view.setElement(元),以完成這件事。
var PostView = Backbone.View.extend({
initialize: function() {
var template = _.template('<option value=""><%= title %></option>');
var html = template({title: 'post'});
this.setElement(html);
}
});
如果你不希望有看法環繞你的HTML,你就必須做幾件事情:
el
this.el
完全
delegateEvents
render: function(){
var html = "some foo";
this.el = html;
this.delegateEvents(this.events);
}
由於Backbone生成div
或其他標籤(根據您的tagName
設置爲視圖),您必須完全替換它。這很容易做到。但是,當您這樣做時,由於Backbone使用jQuery的delegate
進行聯繫,所以您失去了已聲明的事件。要重新啓用您的聲明事件,請致電delegateEvents
並傳入您的活動聲明。
結果是,您的view.el
將是您想要的<option>
標記,除此之外沒有別的。
在0.9.0版本中,Backbone引入了view.setElement(element)
來處理這個操作。
我也試過這種方法,但是看不到在這個
在你的視圖中,你可以使用jquery設置值$(this.el).attr('value','something');' – kreek
甚至'this.el.value ='something''離開jQuery這是需要:) –