带有RequireJS的预编译Handlebars模板

时间:2013-08-16 17:56:04

标签: javascript backbone.js requirejs handlebars.js precompiled-templates

我有一个手动模板,我手动预编译并保存为 - 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)}

1 个答案:

答案 0 :(得分:1)

如果您已预编译它,我不确定您是否需要进行.template调用。您给出的功能应该是模板本身可执行的。所以这个:

$(this.el).html(this.template(data));

成为这个:

$(this.el).html(testTemplate(data));