0

特定のコントローラー/ビューのペアを同時に複数回表示したいと考えています。問題は、ルートが新しいコントローラーを作成するのではなく、現在のコントローラーのモデルを変更することです。

ルートに強制的に新しいコントローラーをインスタンス化することは可能ですか? Ember.Route のコールバックとフックをいじってみましたが、このように動作させる方法が見つかりません。

4

1 に答える 1

1

複数のモデルを同時に表示したい場合、変化する単一のモデルへのルート ポイントを持つことは、あなたがやろうとしていることとうまく対応していないようです。ルーターは、ネストされたルートを使用しない限り、ディスプレイに追加のビューを追加するようには設計されていません。ルートのrenderTemplateフックをオーバーライドして、使用render()するコントローラーを指定することもできますが、複数のコントローラー/ビューのペアが同時に表示されている場合は役に立ちません。

代わりに、カスタム コントローラーを指定する方法の 1 つを使用してみます。表示するもののコレクションがある場合、最も簡単な方法は、テンプレートで#eachヘルパーを使用することです。

{{#each product in products itemController='myControllerName'}}

カスタム ビュー クラスを指定したい場合は、それも可能です。

{{#each product in products itemController='myControllerName' itemViewClass='App.MyView'}}

何をしようとしているかにもよりますが、毎回新しいインスタンスを取得するコンテキストを取得する別の方法は、componentを作成することです。ただし、これはより重いため、おそらくコードの一部をリファクタリングして、コントローラー ロジックをコンポーネントに移動する必要があります。

于 2013-08-25T14:02:05.110 に答える