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));