带有Handlebars.js的Uncaught TypeError

时间:2012-06-11 16:00:37

标签: javascript requirejs handlebars.js

我正在使用带有预编译模板的Handlebars.js。我有以下代码(在第一行使用JQuery):

$('#'+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文件和模板位于同一个域中,它似乎有效,但如果不是,则不起作用,那么与相同的原始策略有关吗?我正在尝试这里的把手require.js插件https://github.com/SlexAxton/require-handlebars-plugin,但是在让它工作时遇到了问题。

1 个答案:

答案 0 :(得分:0)

我用以下方法解决了这个问题:

  • require.js的文本插件,并将把手模板作为文本文件加载
  • r.js
  • 的optimizeAllPluginResources构建选项
  • 获取一个最近更新的require.js / r.js版本修复了一个bug optimizeAllPluginResources构建选项
  • 使用eval运行模板文件代码相当可怕 - 仍然可以避免这种情况

仍然不太确定未定义的Handlebars.templates到底发生了什么。