0

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

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

我在控制台得到以下信息:

在此处输入图像描述

'widget_container' 模板文件肯定存在于指定的位置。我也尝试过标准的handelbars.js 和handelbars.runtime.js。

知道这里发生了什么或如何修复错误吗?

更新:如果 HTML 与 javascript 文件和模板在同一个域中,它似乎可以工作,但如果不是,那么它与相同的源策略有关吗?我在这里尝试使用车把 require.js 插件https://github.com/SlexAxton/require-handlebars-plugin但无法正常工作。

4

1 回答 1

0

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

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

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

于 2012-06-12T13:51:03.480 回答