2012-06-11 2 views
0

Я использую Handlebars.js с предварительно скомпилированными шаблонами. У меня есть следующий код (с помощью JQuery в первой строке):Uncaught TypeError с Handlebars.js

$('#'+id).append('<script src="'+widgetContext.templateDir+ 
              template+'.tmpl">'); 
console.log(Handlebars); 
console.log(Handlebars.templates);          
var html = Handlebars.templates[template](data); 

я получаю в консоли:

enter image description here

«widget_container» файл шаблона определенно существует в месте, указанном , Я также попробовал как стандартные handelbars.js, так и handelbars.runtime.js.

Любая идея, что здесь происходит или как исправить ошибку?

Обновление: похоже, оно работает, если HTML находится в том же домене, что и файл javascript и шаблоны, но нет, если это не так, так что-то делать с той же политикой происхождения? Я пытаюсь использовать handlebars require.js здесь https://github.com/SlexAxton/require-handlebars-plugin, но у меня проблемы с его работой.

+0

Если бы он существовал в этой области действия, если бы не было неопределенным ^.^ – Christoph

+0

Итак, какие-либо идеи относительно того, что может изменить область действия? :-) – jvvw

+0

Sry, я не знаком с рулями ...: / – Christoph

ответ

0

Я решил эту проблему с помощью:

  • Текст плагин для require.js и загрузки шаблонов рули в виде текстовых файлов
  • В optimizeAllPluginResources строят вариант для r.js
  • Получение совсем недавно обновленную версию of require.js/r.js, который исправил ошибку с опцией optimizeAllPluginResources.
  • Довольно ужасное использование eval для запуска кода файла шаблона - все равно было бы неплохо избежать этого

Все еще не совсем уверен, что происходило с неопределенными Handlebars.templates.