2016-08-16 4 views
0

私は既存のアプリケーションにルーティングを適合させようとしています。それは完全な方法でルータに合うようにあまりにも多くの変更を必要とするので、私は$broadcastonEnterのui-routerを使ってそれを管理しようとしています。

URL$state.goとパラメータを使用して変更しています。私は正しい$stateParamsonEnterメソッドの中に入れることができますが、そこからイベントをブロードキャストすると、コントローラーの中に登録されているイベントが実行されていますが、更新されていません。$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をクリックし、コンソールを見てください。あなたの中

答えて

1

使用タイムアウト。$上の()あなたがイベント

$rootScope.$broadcast('getDataForState2', $stateParams); 

に関連するデータを渡し、自分のリスナーにそれを処理する必要があり

$scope.$on("getDataForState2",function() { 
    $timeout(function(){ 
     console.log(JSON.stringify($stateParams)); 
    }); 
}) 
+0

これはあなたのプロを解決しますしかし、私はこの方法を提案しません。私はむしろ解決を使用することをお勧めします。 –

+0

私はそれが正しい方法であることを知っていますが、今のところ私はちょうどあなたの迅速な助けに感謝の仕事をしたいと思っています。 –

関連する問題