Шаблон скомпилированных рулей с 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));
Другие вопросы по тегам