如何使用骨干渲染灰尘模板更简单

时间:2012-11-27 13:43:51

标签: backbone.js templating dust.js

我设法让以下代码正确呈现模板。 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;
}

1 个答案:

答案 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;
}