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 に答える