私は012Jモジュールを使用して、angularJS単一ページアプリケーションの複数のリンクを処理しています。ユーザーが間違ったリンクに到達すると、リダイレクトする必要があります(コンテンツは動的なので外部ソースに依存しますが、関連性はありません)。カウントダウンとリダイレクトの適切な方法
10秒後にユーザーをリダイレクトするとしますが、警告を表示してカウントダウンを表示するとします。私は、その後、リダイレクトseconds
変数の出発フォーム10と0になるまでの秒$interval
小さい数を持つ関数を使用し
$scope.seconds = 10;
$scope.startCountdown = function() {
var intervalPromise = $interval(function() {
if ($scope.seconds > 0) {
$scope.seconds--;
}
else {
$interval.cancel(intervalPromise);
$location.search({});
$location.path("/");
}
}, 1000);
}
$scope.startCountdown();
それは動作しますが、カウントダウン終了前にユーザーの変更の場所は(彼がトップから$location.path("/Summary")
を呼び出すことができるときメニュー)、カウントダウンはバックグラウンドで行われ、数秒後に彼は自宅にリダイレクトされます。
どうすればこの問題を解決できますか?私は$scope.$on("$routeChangeSuccess", function (args) { ... }
イベントを使用して約束を取り消すことができましたが、私はintervalPromise
という変数を保存する必要があります。このカウントダウンロジックを簡単な方法で実装するより良い方法はありますか?