有角度的UI路由器。在像這樣的狀態的控制器中使用$ interval:
$scope.Timer = null;
$scope.startTimer = function() {
$scope.Timer = $interval($scope.Foo, 30000);
};
$scope.stopTimer = function() {
if (angular.isDefined($scope.Timer)) {
$interval.cancel($scope.Timer);
}
};
問題是?計時器在離開狀態時仍然存在。我的理解是,當一個國家離開時,$範圍和控制器基本上被「摧毀」了。所以,在此基礎上,計時器應該停止(在控制器內部,當移動時我取消了計時器,這是有效的 - 但是如果我導航到diff狀態,它仍然存在)。我在這裏誤解了什麼?
我猜因爲間隔和超時是角度爲services,它們在任何地方都可用,但我仍然不明白他們如何在未初始化的控制器中看到函數,除非它被複制。我的解決方案是使用常規的老式js間隔嗎?在$destroy
香草計時器也將持續下去,除非你將其清除。 – Boaz