Ember の新しいバージョン (ルーター V2) の 1 つを使用していますが、さらに新しいルーター V2.2 のブリーディング エッジではありません (最終コミット: 668783a (2013-01-06 21:10:55 -0800))。
私たちのソリューションには、いくつかのビュー コンポーネント (グリッド、オートコンプリート、検索ビューなど) があります。これらのコンポーネントの一部は、ストアやモデルなどにアクセスするため、その作業を処理するコントローラーがあります。これらのビューは、ソリューション全体のいくつかのテンプレートで使用されています。
古いバージョン (pre2) では、これらのビュー コンポーネントを次のように使用しました。
App.ConsoleView = Ember.View.extend({
templateName: 'console',
searchView: App.SearchView.extend(),
.....
})
コンソール テンプレートでは、このような共通ビューを使用しました
{{view view.searchView controllerBinding='App.searchController'}}
私はいつも、このアプローチは最善の方法ではないと感じていました.Emberの新しいバージョンでは、私たちの指を叩きました:)
ここで、「コントローラーを必要とするテンプレートで共有ビューを使用するための推奨される方法は何ですか?」という質問に移ります。
Ember の新しいバージョンでは、テンプレート式
{{view view.searchView controllerBinding='App.searchController'}}
App.searchController が App 名前空間でインスタンス化されなくなったため、機能しません。
私はいくつかの選択肢を考えましたが、本当に好きではありません。
- ルーターを介してコントローラーを「親コントローラー」に接続することもできますが、共有コンポーネントを使用するすべてのルートでこれを行う必要があり、それは大変なことになります。
- いくつかのハッキーな方法でコントローラーを取得し、ビューの init 関数の init 関数を介して設定することができました。
これを良い方法で行うための推奨事項はありますか? これに関するドキュメントが見つからず、googlejuize が不足しています。
すべての応答が高く評価されます!