1
我使用ngRoute
模塊來處理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
變量,並且......它似乎太有線!有沒有更好的方式直接實現這個倒計時邏輯?