0

私は ember を学んでいますが、質問があります: テンプレート ファイルをどこに置くべきですか? アプリケーションをモジュール化するためにrequirejsを使用しているとしましょう。index.htmlスターター キットでmy as を定義すると、次のようになります。

 <script type="text/x-handlebars">
<h2>Welcome to Ember.js</h2>

{{outlet}}
</script>
 <script type="text/x-handlebars" data-template-name="index">

 <ul>
  {{#each item in model}}
  <li>{{item}}</li>
 {{/each}}
 </ul>
</script>

私のアプリは正しく動作します。indexしかし、テンプレートをプロジェクト内の別のファイルに移動したい場合はどうすればよいでしょうかjs/templates/index.html。テンプレートがそのディレクトリにあることを ember に伝えるにはどうすればよいですか? この場合、ビューを使用する必要がありますか? ルートの方法はありますがrenderTemplate、ディレクトリからテンプレートを取得するように指示する方法がわかりません:

define(['ember','text!templates/index.html'],function(ember, indexTemplate){
var IndexRoute = Ember.Route.extend({
    renderTemplate: function(){
        this.render(indexTemplate); // clearly this is not the solution, I just don't know how to refer to the indexTemplate.
    },
    model: function(){
        return ['red','blue','yellow'];
    }
});

return IndexRoute;
});

このメソッドは、レンダリングされるテンプレートの名前を決定する文字列を待機するため、テンプレートが実際にはアプリケーションのではrenderTemplateなく、別のファイルにあることを ember に伝える方法がわかりません。index.htmltemplates/index.html

4

2 に答える 2

1

基本的に、テンプレートをレンダリングするためrequire.jsに使用する必要はまったくありません。renderTemplateビューで余分なことをする必要がない場合は、ビューを定義する必要さえありません。さらに、で定義されたテンプレートindex.htmlを個別のハンドルバー ファイルに分割する*.hbs*.handlebars、このテンプレート ファイルを正しい順序でロードすることができます。

require.jsプロジェクトファイルをロードするために使用するこのプロジェクトを見てください:

  1. https://github.com/sh4n3d4v15/ember-todos
  2. https://github.com/stephenplusplus/todomvc/tree/emberjs_require/dependency-examples/emberjs_require
  3. https://bitbucket.org/cprecourt/ember-requirejs-example/src

それが役に立てば幸い。

于 2013-06-21T16:56:32.747 に答える
1

require.jsEmber.js を使用する場合は、まったく使用する必要はありません。Ember.js はHandlebarsをテンプレート エンジンとして使用するため、テンプレートを個別のファイルに記述できます。ファイル名は、.handlebarsまたはで終わる必要があります.hbs

次に、テンプレート ファイルをプリコンパイルする必要があります。この手順では、 と を使用する必要がありますNode.jsnpmこれにより、すべてのテンプレート ファイルが 1 つの JavaScript ファイルになります。このファイルをエントリ HTML にリンクするだけで、リンク先の直後に配置してember.js、Ember がこれらのテンプレートの名前を認識できるようにします。これが、すべてのクラスが属性Viewから名前を知る理由です。renderTemplate

1 つのファイルにロードしたくない膨大な数のテンプレートがある場合は、.jsそれらを個別にコンパイルし、後で依存関係を管理するために使用することを選択できますrequire.js。これは Ember では問題ありません。

Handlebars プリコンパイルの詳細については、次のリンクを確認してください: http://handlebarsjs.com/precompilation.html

于 2013-06-21T18:09:22.677 に答える