3

我有一个句柄模板,我手动预编译并保存为 - testTemplate.handlebars。与RequireJS预编译的把手模板

现在,在我的requireJS +骨干代码,我有以下功能 -

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));,它给出了一个错误信息说 - 遗漏的类型错误:对象没有方法调用。 (即使我可以看到一个e.call功能)

我在这里做错了什么?

此外,当我尝试编译模板运行时渲染功能的作品。 虽然返回运行时编译Handlebars.compile(testTemplate)以下功能 -

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

回答

1

如果你已经预编译它,我不知道你需要做的.template电话。您提供的功能应该作为模板本身可执行。所以这个:

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

变成这样:

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