Backbone:如何将模板渲染为 DOM?
Backbone: How to render template to DOM?
我是 Backbone 的新手,在渲染模板时遇到困难。
模板本身就这么不起眼:
<script id="messageTemplate" type="text/template">
Message: <%= content %>
</script>
Backbone 视图和模型如下所示:
var Message = Backbone.Model.extend({
defaults: {
content: 'Default message'
}
});
var MessageView = Backbone.View.extend({
tagName: 'p',
template: _.template($('#messageTemplate').html()),
initialize: function() {
this.render();
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
var msg = new Message();
var msgView = new MessageView({model: msg});
我想没什么特别的——只是一个简单的模型和一个使用模板的视图,将占位符替换为 msg
中的内容。
当使用 personView.el
在控制台中检查时,我得到了正确的 HTML 字符串,但是我应该如何将它呈现给 DOM?
当然,我已经通读了 Backbone 和 Underscore 文档,但我没有找到太多相关信息。
backbone 视图包含对 el 的引用,它可能是也可能不是页面 DOM 的一部分。如果不是,那么您可以像附加任何其他元素一样附加它。
例如
var msg = new Message();
var msgView = new MessageView({model: msg});
$('#someParentElement').append(msgView.el);
我是 Backbone 的新手,在渲染模板时遇到困难。
模板本身就这么不起眼:
<script id="messageTemplate" type="text/template">
Message: <%= content %>
</script>
Backbone 视图和模型如下所示:
var Message = Backbone.Model.extend({
defaults: {
content: 'Default message'
}
});
var MessageView = Backbone.View.extend({
tagName: 'p',
template: _.template($('#messageTemplate').html()),
initialize: function() {
this.render();
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
var msg = new Message();
var msgView = new MessageView({model: msg});
我想没什么特别的——只是一个简单的模型和一个使用模板的视图,将占位符替换为 msg
中的内容。
当使用 personView.el
在控制台中检查时,我得到了正确的 HTML 字符串,但是我应该如何将它呈现给 DOM?
当然,我已经通读了 Backbone 和 Underscore 文档,但我没有找到太多相关信息。
backbone 视图包含对 el 的引用,它可能是也可能不是页面 DOM 的一部分。如果不是,那么您可以像附加任何其他元素一样附加它。
例如
var msg = new Message();
var msgView = new MessageView({model: msg});
$('#someParentElement').append(msgView.el);