SearchView = Backbone.View.extend({
initialize: function(){
this.render();
},
render: function(){
// Compile the template using Handlebars
var template = Handlebars.compile( $("#search_template").html() );
// Load the compiled HTML into the Backbone "el"
this.el.html( template );
}
});
SearchView = Backbone.View.extend({
initialize: function(){
// Compile the template just once
this.template = Handlebars.compile($("#search_template").html());
this.render();
},
render: function(){
// Render the HTML from the template
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
4条答案
按热度按时间cigdeys31#
使用
handlebars.js
而不是underscore
模板非常简单。https://cdnjs.com/libraries/backbone.js/tutorials/what-is-a-view(滚动到“加载模板”部分)
基本上,backbone的惯例是在一个render函数中构建html。模板引擎的使用完全由你决定(我喜欢Backbone的这一点)。所以你只需将它改为:
因为你使用的是
require.js
,所以你可以在模块的顶部把Handlebars
作为一个依赖项。我对这个还很陌生,但是听起来你应该把重点放在学习Backbone.js
模式和require.js
的用法上。oyt4ldly2#
我更喜欢编译一次模板(在初始化期间),这样就避免了每次渲染都要重新编译模板。另外,为了生成HTML,您需要将模型传递给编译后的模板:
rkttyhzu3#
如果您使用require.js,您将无法使用当前的Handlebars文件。我使用了下面的Handlebars Plugin,它似乎是最新的当前版本。如果Handlebars在您的模块中返回空值,只需用上面的插件替换您的Handlebars文件。
gj3fmq9x4#