Marionette.CompositeViewでテンプレート化するハンドルバーを使用しています。テンプレートは次のように定義されます。
template : function (serializedData) {
var templFn = Handlebars.compile(myTemplateDef);
return this.templFn(serializedData);
}
ハンドルバーを備えた従来のバックボーンでは、ビューをレンダリングするたびにテンプレートをコンパイルするのではなく、コンパイルされたテンプレートをViewプロパティとして保存して、一度だけコンパイルされるようにすることで、リソースを節約することをお勧めします。
templFn : Handlebars.compile(myTemplateDef),
render : function () {
var serializedData = this.model.toJSON();
...
this.$el.append(this.templFn(serializedData);
}
しかし、マリオネットの場合、template()のコンテキストはでありwindow
、template()が呼び出される方法/タイミングを制御しません。
したがって、問題は次のとおりです。グローバル変数を作成したくないwindow.templFn
場合、マリオネットの場合、テンプレートのコンパイルをその使用法から分離する方法はありますか?