私は既存のアプリケーションにルーティングを適合させようとしています。それは完全な方法でルータに合うようにあまりにも多くの変更を必要とするので、私は$broadcast
とonEnter
のui-routerを使ってそれを管理しようとしています。
URL
を$state.go
とパラメータを使用して変更しています。私は正しい$stateParams
をonEnter
メソッドの中に入れることができますが、そこからイベントをブロードキャストすると、コントローラーの中に登録されているイベントが実行されていますが、更新されていません。$stateParams
オブジェクトです。
$stateProvider.state("state1", {
url: "/state1/{docId}",
template: "<p>State 1</p>",
}).state("state2", {
url: "/state2/{docId}",
template: "<p >State 2</p>",
onEnter : function($rootScope,$stateParams) {
console.log("Before braodcast ", JSON.stringify($stateParams));
$rootScope.$broadcast("getDataForState2");
}
});
JSFiddle私の問題を示しています。状態2をクリックし、コンソールを見てください。あなたの中
これはあなたのプロを解決しますしかし、私はこの方法を提案しません。私はむしろ解決を使用することをお勧めします。 –
私はそれが正しい方法であることを知っていますが、今のところ私はちょうどあなたの迅速な助けに感謝の仕事をしたいと思っています。 –