手動でプリコンパイルして、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機能は見えますが)
ここで何か間違っていますか?
また、テンプレート ランタイムをコンパイルしようとすると、render 関数が機能します。ランタイム コンパイル Handlebars.compile(testTemplate) 中に、以下の関数が返されます -
function (e,t){return n||(n=r()),n.call(this,e,t)}