我有一个手动模板,我手动预编译并保存为 - testTemplate.handlebars。
现在,在我的requireJS + Backbone代码中,我有以下功能 -
define(['text!../templates/testTemplate.handlebars'
],function(testTemplate){
var myView = Backbone.View.extend(
initialize: function(options){
this.template = Handlebars.template(testTemplate);
},
render: function(data){
$(this.el).html(this.template(data));
}
);
});
因此testTemplate.handlebars以字符串形式返回Javascript代码,当传递给Handlebars.template时返回JS函数。当我尝试在控制台上打印时,我显示的this.template变量值为
function (n,r){return r=r||{},e.call(t,Handlebars,n,r.helpers,r.partials,r.data)}
但是,当渲染函数的行 - $(this.el).html(this.template(data));
执行时,它会给出一条错误消息 - Uncaught Typeerror:object没有方法调用。 (即使我能看到一个e.call函数)
我在这里做错了吗?
此外,当我尝试编译模板运行时,渲染功能起作用。 运行时编译Handlebars.compile(testTemplate)时会返回以下函数 -
function (e,t){return n||(n=r()),n.call(this,e,t)}
答案 0 :(得分:1)
如果您已预编译它,我不确定您是否需要进行.template调用。您给出的功能应该是模板本身可执行的。所以这个:
$(this.el).html(this.template(data));
成为这个:
$(this.el).html(testTemplate(data));