2016-08-18 15 views
0

私はAngular 1.5とui-routerを使用しています。私はユーザleavesのルートを検出したいと思う。ユーザーは$scope.flagfalseに設定されており、この機能が誤って発射し、このルートに移動したときので、これはかなりの仕事をしません経路を離れる角度検出。

$scope.$on("$stateChangeSuccess", function() { 
     if (!$scope.flag) { 
     //... 
     $scope.do_work(reason); 
     } 
    }); 

:私は現在のようなものを持っています。ユーザーが特定のルートから移動するときに関数を起動する慣習的な方法はありますか?移動するときは移動しません。

+0

**へ**それをナビゲートすると別のルート(ナビゲート)から来ています。だから、常に解雇されます –

答えて

2

onExitフックui-routerを使用してください。これは単一の状態で指定できます。しかし、$scopeにアクセスすることはできません。

これに対処するには、共有可能なデータを持つサービスを維持するといいでしょう。その共有可能なデータを希望の状態のonExitフックから変更します。その後、コントローラ内の同じサービスにアクセスすることができます。

$stateProvider.state("contacts", { 
    template: '<h1>Dummy Template</h1>', 
    controller: 'myCotroller', 
    onExit: function(sharableService){ 
    //... do something sharableService variable... 
    } 
}) 
+0

これは最高の利用可能なソリューションのように聞こえるが、私は私はそれに1つの変数の状態を持つサービスを作成したいとは思えません。スコープの代わりに 'rootScope'を使って回避することができました。これは良い解決策ではありません。 –

+1

rootScopeのために行ってはいけません。サービスを作成するには 'sharedDataService'のような一般的な名前でservice.ratherを作成し、そこに変数を入れてください。将来的にもっと可変なデータとメソッドを持つことができます。 –

+0

' $ scope。$ destroy'を実行します。私はangleのconfig関数で$ stateProviderを使ってサービスを注入しようとしましたが、それはうまくいかないでしょう。 –

関連する問題