Templates 木偶视图';s车把模板在使用前编译一次
我在用木偶做把手模板。模板定义为:Templates 木偶视图';s车把模板在使用前编译一次,templates,backbone.js,marionette,Templates,Backbone.js,Marionette,我在用木偶做把手模板。模板定义为: template : function (serializedData) { var templFn = Handlebars.compile(myTemplateDef); return this.templFn(serializedData); } 在带有把手的传统主干中,建议不要在每次呈现视图时编译模板,而是将编译后的模板存储为视图属性,这样它只编译一次,从而节省资源: templFn : Handlebars.compile(myTe
template : function (serializedData) {
var templFn = Handlebars.compile(myTemplateDef);
return this.templFn(serializedData);
}
在带有把手的传统主干中,建议不要在每次呈现视图时编译模板,而是将编译后的模板存储为视图属性,这样它只编译一次,从而节省资源:
templFn : Handlebars.compile(myTemplateDef),
render : function () {
var serializedData = this.model.toJSON();
...
this.$el.append(this.templFn(serializedData);
}
但是在木偶的情况下,template()的上下文是window
,我不控制如何/何时调用template()
所以问题是:鉴于我们不想创建一个全局var
窗口。templafn
有没有办法将模板编译与木偶的使用分开?木偶有一个把手插件:
它可能不是完全最新的,但您至少应该能够看到他们是如何处理模板的编译的
一般来说,木偶网提供了一个
木偶网.Renderer
和木偶网.TemplateCache
对象,允许一个模板编译一次,并且只编译一次,然后从缓存的模板编译重新渲染。我两天前才开始使用木偶网,在木偶网之前我的代码中使用了把手(纯主干),然后我在木偶中使用了这种方式:
template : function(data) {
if (typeof this.tplFun === 'undefined') {
this.tplFun = Handlebars.compile($('#angry_cat-handlebars').html());
}
return this.tplFun(data);
};
或者您可以将tplFun添加到初始化函数中谢谢,看起来很有希望。我会研究一下。