我设法让以下代码正确呈现模板。 home
是预编译的模板名称。
app.HomeView = Backbone.View.extend({
el: '#main',
template: 'home',
render: function(){
var self = this;
dust.render(this.template, {name:'world'}, function(err,out){
self.$el.html(out);
});
return this;
}
});
然而,由于我有很多模板,因此弄乱self
和灰尘回调的东西并不是很整洁。
是否可以清理它,就像使用下划线模板一样(如下所示)?
template: _.template( $('#some-template').html() ),
render: function(){
this.$el.html(this.template( {name:'world'} ));
return this;
}
答案 0 :(得分:1)
我实际上并没有使用过灰尘,但是通过查看the docs,看起来似乎无法使用上面示例中的回调。但是,您可以通过使用self
来确定回调方法,从而摆脱bind
变量:
render: function(){
dust.render(this.template, {name:'world'}, function(err,out){
this.$el.html(out);
}.bind(this));
return this;
}
不能完全解决您的问题,但无论如何了解bind
都很有用。请注意,并非所有浏览器都支持它(例如IE 8)。但是,您可以轻松地将功能添加到不支持它的浏览器中。 MDN有一个我使用的nice little solution。
或者你可以通过使用下划线的内置模板轻松实现你想要的功能,尽管你必须构建自己的模板缓存来预先编译模板。
render: function(){
this.$el.html(_.template(this.template));
return this;
}