3

最近、複雑なレイアウトのアプリケーションを作成しているので、多くのテンプレートを使用して思いどおりに機能させるエレガントな方法を見つけようとしています。

まず、いくつかの UI コンポーネントを組み込みます。これらのコンポーネントはモデルとは関係がなく、ルートを使用して状態を管理する必要がないため、{{render}}ヘルパーを使用して次のようなことを行います。

<script type="text/x-handlebars">
  <div class="wrapper">
    {{render component_1}}
    {{render component_2}}

    <div class="main">
      {{outlet}}
    </div>
  </div>
</script>

renderTemplateこの方法は機能しますが、正直なところ、これを行う前に方法について何も知りません。数日後、代わりにこれを試します:

<script type="text/x-handlebars">
  <div class="wrapper">
    {{outlet component_1}}
    {{outlet component_2}}

    <div class="main">
      {{outlet main}}
    </div>
  </div>
</script>

ルートに追加のコードを追加します。

MyApp.ApplicationRoute = Ember.Route.extend({
  renderTemplate: function() {
    this.render();
    this.render('component_1', {
      outlet: 'component_1',
      into: 'application'
    });
    this.render('component_2', {
      outlet: 'component_2',
      into: 'application'
    });
  }
});

その後、同じ結果が得られました。

今、私はこれら 2 つの方法のどちらかを選択するのに苦労しています。これらの UI コンポーネントは状態を持たないためルートを使用することはないと思うので、最初のものを好みますApplicationRoute。しかし、まだ懸念事項が 2 つあります。

  1. 関連するすべてのチュートリアルでは後者を使用しています。使用する自信がありません{{render}}
  2. もっと重要なこと : 自分のアプリケーションに関する今後の変更を予測することはできません。どのアプリケーションがより柔軟に変更に対応できるか、または拡張性が高くなるかはわかりません。

{{render}}ですから、賢く使用するには、いくつかの説明と提案が必要renderTemplateです。助けてくれてありがとう。

4

1 に答える 1

1

それらがコンポーネントであり、本格的なルートではない場合は、テンプレートで render を使用してください。

{{render}} は、現在のコンテキストで同じ名前のコントローラーとテンプレートを使用します。つまり、現在のルートからコンテキストを取得するということです。同名のビュー クラスが存在する場合は、そのビュー クラスを使用します。モデルを指定すると、そのコントローラーのモデルになります。デフォルトのターゲットは同じコントローラーになります。

于 2013-06-10T23:59:30.843 に答える