6

私の EmberJS アプリでは、すべてのハンドルバー テンプレートをプリコンパイルしているので、それらはそのままの Javascript ファイルとして読み込まれます。

問題は、これらのプリコンパイル済みテンプレートが、私が思っていたように Ember コンテナーに入らないことです。ビューのテンプレートを指定すると、次のエラーが発生します。

Uncaught Error: assertion failed: You specified the templateName "application" for <MyApp.ApplicationView:ember164>, but it did not exist. 

これが私のビューコードです。

window.MyApp.ApplicationView = Ember.View.extend({
   templateName: 'application'
});

実行をステップ実行したところ、ビューが Ember コンテナーに存在しないことがわかりました。プリコンパイル済みテンプレートをコンテナーに登録するために何か特別なことをする必要がありますか? もしそうなら、どのように?

編集: handlebars npm パッケージを使用してテンプレートをコンパイルしています。

4

3 に答える 3

3

テンプレートが検索されますEmber.TEMPLATES(これは、テンプレート名をキーとする単なるハッシュです)

したがって、例ApplicationViewを実行すると、でテンプレートが検索されます。Ember.TEMPLATES['application']

于 2013-03-01T23:25:23.453 に答える
1

npm ハンドルバー コンパイラは実際にそれらを正しくコンパイルしますが、それらを正しくロードするには、Ember に登録する必要があります。次のいずれかを実行できます。

  • Ember.TEMPLATES['sometemplate'] = COMPILED TEMPLATE を使用して手動でロードします。これは機能しますが、少し面倒になります。
  • npm ember-precompile などの特別なコンパイラを使用すると、コンパイルされたテンプレートが Ember テンプレート コンテナに自動的に登録されるようにコンパイルされます。
于 2013-03-02T16:20:37.890 に答える
0

Ruby/Guard ベースのソリューションを好む場合は、https ://gist.github.com/perlun/5286391 の私の要点を確認してください。

Guardfile から次のように使用します。

guard 'ember_handlebars',
    :input => 'app/handlebars_templates',
    :output => 'app/handlebars_compiled',
    :remove_prefix => 'app/handlebars_templates/' do
  watch(%r{app/handlebars_templates/(.+\.handlebars)})
end

```

于 2013-04-01T17:38:20.087 に答える