我有问题,当我打开我的页面然后打开新标签,然后转到另一个标签时,我的$ intevral停止工作。
更多细节:我有进度条倒计时,当我开始它时,我在那个标签中一切正常,但是当我去另一个标签时它停止倒计时,当我回来时很快就算了降到适当的价值。例如,如果我在5秒钟离开它,然后转到另一个标签并在15秒后回来,我可以看到它仍然是5,但在不到秒的时间内回到零。
这是我的代码:
JavaScript的:
function startPause() {
$scope.pause *= 10;
pauseCountDown = $interval(function () {
$scope.pause -= 1;
}, 100);
}
function stopPause() {
$interval.cancel(pauseCountDown);
pauseCountDown = undefined;
}
$scope.$watch('pause', function(newVal, oldval) {
if (newVal != oldval) {
$scope.pauseView = Math.round(newVal / 10);
if (!$scope.isLongPause) {
$scope.pausePercentage = newVal / $scope.routine.ShortPauseLengthInSeconds * 10;
} else {
$scope.logPausePercentage = newVal / $scope.routine.LongPauseLengthInSeconds * 10;
}
if (newVal < 1) {
$scope.isLongPause = false;
stopPause();
}
}
});
HTML:
<div class="progress">
<div id="PauseProgress" data-ng-hide="isLongPause" class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" data-ng-style="{width : (pausePercentage + '%')}">
</div>
<div id="PauseProgressLong" data-ng-show="isLongPause" class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" data-ng-style="{width : (logPausePercentage + '%')}">
</div>
</div>
<div id="PauseTimer" class="pause-timer">
{{pauseView}}
</div>
我和秒表的代码有点类似,当我离开标签并转到另一个时,一切正常(可能,它们之间的最大区别在于秒表我不使用$ scope。$ watch,can that是问题的原因?)
所以我的问题是,为什么会发生这种情况,我该如何解决?