3

我有一个车把模板,我手动预编译并保存为 - 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));render 函数的行 - 执行时,它会给出一条错误消息 - Uncaught Typeerror : object has no method call。(即使我可以看到 e.call 功能)

我在这里做错了吗?

此外,当我尝试编译模板运行时,渲染函数工作。在运行时编译 Handlebars.compile(testTemplate) 时返回以下函数 -

function (e,t){return n||(n=r()),n.call(this,e,t)}
4

1 回答 1

1

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

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

变成这样:

$(this.el).html(testTemplate(data));
于 2013-08-19T00:24:54.073 回答