pre2で、ルーターの外部に次のアプリケーションコードがあるとします。
var controller = App.MyController.create();
controller.content = [...];
App.get('router').get('applicationController').connectOutlet({
outletName: 'modal',
controller: controller,
viewClass: App.MyView,
context: controller
});
つまり、「アプリケーション」テンプレートに追加された「モーダル」という名前のアウトレットにデータを入力します。
さて、pre4では、ルーターによって作成されたコントローラーへの参照はありません。ルーターの外部からコンセントをどのように満たしますか?
ルーターに遷移を要求することはできますが、現在のコンテンツに対してモーダルを開いているだけなので、URLを変更したくありません。
編集:
これは、App.Router.routerオブジェクトからアプリケーションビューを検索することによって、一時的な修正のために私が思いついたものです。明らかにそれは汚いハックです、誰もがpre4でそれを行うための最良かつ正しい方法を知っていますか?
var controller = App.MyController.create();
controller.content = this.get('content');
var theView = App.MyView.create();
theView.set('controller', controller);
App.Router.router.currentHandlerInfos[0].handler.router._activeViews.application[0].connectOutlet('modal', theView);