次のコントローラーがあり、send を使用してイベントをバブルアップしたい
App.PersonController = Ember.ObjectController.extend({
page: function(page) {
var model = PersonApp.Page.create({id: page});
this.send("person.page", model); //should bubble up ...
}
});
ここに私のルート設定があります
PersonApp.Router.map(function(match) {
this.resource("person", { path: "/" }, function() {
this.route("page", { path: "/page/:page_id" });
});
});
これが単純なページモデルです(基本的にシム)
PersonApp.Page = Ember.Object.extend({
});
ルート「person.page」を使用していて、有効なモデルを渡していますが、次のエラーが発生します (ルーターにこのルートがないように見えますか?)
キャッチされていないエラー: イベント 'person.page' を処理したものはありません。
コントローラーとルーターの関係をデバッグするのに役立つ場合は、 this.get('target') をダンプすると、コントローラー内で気づきました ...
_debugContainerKey: "ルーター:メイン"
さらに掘り下げて...これを印刷すると
this.get('ターゲット').get('ルーター')
currentHandlerInfos 配列の下にルートを含むルーターが表示されます...これほど深くする必要があるかどうかはわかりませんが
...別のわずかな更新
これを行うと(完全に)、window.location が変更されたように見えますが、ルート上のモデル/setupController フックがヒットすることはありません。
this.get('target').get('router').transitionTo(route, model);