Шаблон скомпилированных рулей с RequireJS
У меня есть шаблон руля, который я предварительно скомпилировал и сохранил как - 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: объект не имеет вызова метода. (Хотя я вижу функцию 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));