2

次のコードでテンプレートを正しくレンダリングすることができました。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;
}
4

1 に答える 1

1

私は実際にダストを使用していませんが、ドキュメントを見ると、上記の例のようにコールバックを使用する方法はないようです。ただし、次のよう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には、私が使用するちょっとした解決策があります。

または、アンダースコアに組み込まれているテンプレートを使用することで、必要なものを簡単に実現できます。ただし、テンプレートの事前コンパイルを行うには、独自のテンプレートキャッシュを作成する必要があります。

render: function(){
  this.$el.html(_.template(this.template));
  return this;
}
于 2012-11-27T16:26:39.267 に答える