2016-09-20 8 views
0

私はngRouteを使用しています。 dashboardControllerに$ intervalがあります。dashboardページを終了した後でキャンセルするにはどうすればよいですか?私は$destroyに耳を傾けようとしました。しかし、私はdashboardページを入力するとこのイベントが発生するようです。 $routeChangeSuccessも動作しません。

ルート:

.when('/dashboard', { 
     templateUrl: 'dashboard.html', 
     controller: 'dashboardController', 
    }) 
    .when('/applications', { 
     templateUrl: 'applications.html', 
     controller: 'appController', 
    }) 

dashboardController:

var update = $interval(function() { 
    //..... 
},1000) 

$scope.$watch('$destroy', function(e) { 
    $interval.cancel(update); 
}) 
+0

なぜインターバルをキャンセルする必要があるのか​​についての概要を教えてください。私たちが提供できるよりよい解決策があるかもしれません。 – Nix

+0

$ intervalを使用して、 'ダッシュボード 'や他のいくつかのページのデータを更新するためにajaxリクエストを送信し続けます。明らかに、私はそれらの一部だけを使用しているときにすべての要求を送信し続けたくありません。 – vincentf

+0

'$ destroy'はなぜあなたにとってうまくいかないでしょうか? – Nix

答えて

2

ああ、私はそれを初めて逃しました! $scope.$watchがありますが、それは$on

である必要があります。$destroyのインターバルは、次のコードでキャンセルされます。これはルートが変更されたときに呼び出されます。

$scope.$on('$destroy', function(e) { 
    $interval.cancel(update); 
}); 
+0

ああ、私は構文に気付かなかった...ありがとうNix – vincentf

関連する問題