Подтвердить что ты не робот

TypeError, применяющий предварительно скомпилированные шаблоны Handlebars с контекстом

Извините за вопрос noob, но я просто не могу получить предварительно скомпилированные шаблоны Handlebars, чтобы сделать что-либо, кроме barf out

TypeError: 'undefined' не является функцией (оценивая "templateSpec.call(контейнер, Handlebars, context, options.helpers, options.partials, options.data)" )

каждый раз, когда я применяю контекст к (предварительно скомпилированному) шаблону.

Учитывая следующие файлы и содержимое:

  • hello.handlebars: <p>Hello, {{name}}</p>
  • templates.js: результат компиляции hello.handlebars через handlebars hello.handlebars -f templates.js
  • index.html: включает Runlebars RC1 runtime в head и это для тела:

    <body id="body">
      <script src="templates.js" type="text/javascript" charset="utf-8"></script>
      <script type="text/javascript" charset="utf-8">
        var compiledTemplate = Handlebars.templates['hello'];
        var html = compiledTemplate({ name: 'World' });
        document.getElementById('body').innerHTML = html;
      </script>
    </body>
    

Вызов compiledTemplate() выдает эту ошибку выше, чем бы я ни занимался, но я могу получить шаблоны на стороне клиента для компиляции и отображения. Все пошаговые руководства и учебные пособия, которые я видел, пропускают это, как это очевидно, поэтому мне, должно быть, не хватает чего-то глупого. Любые идеи?

4b9b3361

Ответ 1

Обязательно сопоставьте версии серверов и клиентских пакетов Handlebars. Способ проверки версии скомпилированного шаблона выглядит следующим образом:

handlebars a_template_of_yours.handlebars | grep "compilerInfo"

Он должен выводить что-то вроде этого:

this.compilerInfo = [4, ' >= 1.0.0'];

Первое значение - это Редактор компилятора, который должен соответствовать выходу следующего кода в вашем браузере:

Handlebars.COMPILER_REVISION

Если вы использовали npm для загрузки своего компилятора Handlebars, укажите нужную вам версию. Ниже приведен пример для handlebars.runtime-v1.3.0.js:

npm install [email protected] -g

Ответ 2

Проблема для меня в том, что в настоящее время (июнь 2014 года) релиз 2.0 на GitHub отмечен альфа https://github.com/wycats/handlebars.js/releases.

Если я устанавливаю рули через bower, он выбирает последнюю стабильную версию. v1.3.0.

npm install handlebars, однако, устанавливает версию ~2.0.0-alpha.4.

Решение: обновите версию в bower.json до ~2.0.* и запустите bower update.