当我使用路线从一个州转到另一个州时,$ interval继续运行

时间:2015-12-18 04:27:11

标签: javascript angularjs angular-ui-router angularjs-controller

我有一个应用程序,我必须在其中显示页面超时计时器进度条。我是用$ interval做的。但是当我从一个状态转到另一个状态时,$ interval不会被清除,并且会显示上一页的会话超时。我在控制器中使用$ interval函数来实现计时器功能。我也取消了相同的页面销毁。这是下面的代码片段,

$scope.obj.updateProgressBar = function () {
        $scope.obj.showTimer = true;
        intervalPromise =  $interval(function () {

            if ($scope.obj.currentTime < $scope.obj.max) {
                $scope.obj.currentTime += 1;
                $scope.obj.diff = $scope.obj.max - $scope.obj.currentTime;
                $scope.obj.m = ($scope.obj.diff / 60) >> 0;
                $scope.obj.s = ($scope.obj.diff - $scope.obj.m * 60) + '';
                $scope.obj.s = ($scope.obj.s).length >= 1 ? $scope.obj.s : '0';
            } else {
                $scope.obj.timeout=true;
                $interval.cancel(intervalPromise);
                $scope.togglePopup();
                $scope.open('sm', 'sessionTimeoutTemplate');
            }
        }, 1000,timerDuration+1);
    };
    $scope.obj.updateProgressBar();

}
$scope.$on('$destroy',function(){
if(intervalPromise)
    $interval.cancel(intervalPromise);   

});

请帮助我,我可以做些什么来消灭$ interval。

谢谢, 图莎尔

0 个答案:

没有答案