Baz*_*zZy 23 render backbone.js
我有模特邮政和收集帖子.并想用所有帖子的列表制作表格<select id="multi" multiple="multiple">
.所以我必须在我的#multi中使用这个模板进行PostView渲染:
<option value=""><%= title %></option>
Run Code Online (Sandbox Code Playgroud)
但最后我把它包裹着div.有没有包装这个模板的解决方案<div>
?
kre*_*eek 33
如果没有el
为视图定义(或tagName)(在类中或在实例化期间),视图将放在div标记内.http://documentcloud.github.com/backbone/#View-el
var PostView = Backbone.View.extend({
tagName: 'option'
});
Run Code Online (Sandbox Code Playgroud)
UPDATE
从v0.9.0开始,Backbone有了view.setElement(element)来完成这项工作.
var PostView = Backbone.View.extend({
initialize: function() {
var template = _.template('<option value=""><%= title %></option>');
var html = template({title: 'post'});
this.setElement(html);
}
});
Run Code Online (Sandbox Code Playgroud)
Der*_*ley 18
如果您不希望视图包装HTML,则必须执行以下操作:
this.el
完全替换delegateEvents
新的el
render: function(){
var html = "some foo";
this.el = html;
this.delegateEvents(this.events);
}
Run Code Online (Sandbox Code Playgroud)
由于Backbone会生成一个div
或其他标记(根据您tagName
的视图设置),您必须完全替换它.这很容易做到.但是,当你这样做时,你会丢失你声明的事件,因为Backbone使用jQuery delegate
来引导它们.要重新启用声明的事件,请调用delegateEvents
并传入事件声明.
结果是您view.el
将成为<option>
您想要的标签,仅此而已.
归档时间: |
|
查看次数: |
17754 次 |
最近记录: |