2

Ember.jsでハンドルバーテンプレートファイルを取得してレンダリングする際に問題が発生します。ブラウザのデバッグコンソールで次のエラーが発生します。

エラー:<(Welcome.LoginViewのサブクラス):ember166>-テンプレート「login_view」が見つかりません。

app.jsファイルのemberjsコードに次のコードがあります。

Welcome = Ember.Application.create();

Welcome.LoginView = Ember.View.extend({
  templateName: 'login_view'
});

index.htmlファイルには次のスニペットもあります。

<script type="text/x-handlebars">
  {{view Welcome.LoginView}}
</script>

最後に、app.jsファイルに関連して、レンダリングするテンプレートの内容を含むファイルtemplates/login_view.handlebarsがあります。

<form class="form-inline">
  <fieldset>
    <input type="text" name="email" placeholder="email address">
    <input type="password" name="password" placeholder="password">
    <button class="btn btn-primary" type="submit">Sign In</button>
    <!-- ... -->
  </fieldset>
</form>

エラーは、ハンドルバーテンプレートが見つからないことを示しているようです。生成されたHTMLを見ると、ページに上記のフォームが表示されません。

誰かが私が間違っていることに光を当てることができますか?

4

1 に答える 1

4

あなたの質問から、ハンドルバー テンプレートをプリコンパイルするツールを使用していないと思います。Ember は配列内のテンプレートを検索します。で終わるEmber.TEMPLATESテンプレートを自動的に検索するわけではありません。テンプレートをコンパイルするビルド ステップがない場合は、自分でこれを行う必要があります。templates/.handlebars

これは複雑に聞こえるかもしれませんが、次のように簡単です。

Ember.TEMPLATES["login_view"] = Ember.Handlebars.compile('TEMPLATE CODE');

使用する前に、このテンプレート定義が存在することを確認する必要があります。


別の解決策は、テンプレートをインライン化し、スクリプト タグに属性をindex.html追加することです。data-template-name="login_view"

<script type="text/x-handlebars" data-template-name="login_view">
  <form class="form-inline">
    <!-- ... -->
  </form>
</script>

ただし、プロジェクトに多数のテンプレートがある場合は、最初のオプションを実行するビルド ツールを採用することをお勧めします。


関連する質問: Ajax 経由で Handlebars テンプレートを読み込むことはできますか?

于 2012-04-17T02:59:26.103 に答える