在另一个选项卡中,Angular $ interval不起作用

时间:2014-07-21 06:19:33

标签: javascript angularjs

我有问题,当我打开我的页面然后打开新标签,然后转到另一个标签时,我的$ 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是问题的原因?)

所以我的问题是,为什么会发生这种情况,我该如何解决?

0 个答案:

没有答案