【发布时间】:2015-09-05 11:38:39
【问题描述】:
Angular,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);
}
};
问题?定时器在离开状态时持续存在。我的理解是,当状态离开时,$scope 和控制器基本上被“破坏”了。因此,基于此,计时器应该停止(在控制器内,我在四处移动时取消计时器,这有效 - 但如果我导航到差异状态,它仍然存在)。我在这里有什么误解?
我猜因为间隔和超时在角度上是services,所以它们随处可用,但我仍然不明白他们如何看待未初始化控制器中的函数,除非它被复制。我的解决方案是只使用常规的旧 js 间隔吗?
【问题讨论】:
-
原版计时器也会持续存在,除非您将其清除。
标签: angularjs angular-ui-router intervals