Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我使用route从一个状态转到另一个状态时,$interval将继续运行_Javascript_Angularjs_Angular Ui Router_Angularjs Controller - Fatal编程技术网

Javascript 当我使用route从一个状态转到另一个状态时,$interval将继续运行

Javascript 当我使用route从一个状态转到另一个状态时,$interval将继续运行,javascript,angularjs,angular-ui-router,angularjs-controller,Javascript,Angularjs,Angular Ui Router,Angularjs Controller,我有一个应用程序,其中我必须显示一个页面超时计时器进度条。我正在使用$interval执行此操作。但是,当我从一个状态转到另一个状态时,$间隔不会被清除,并且显示上一页的会话超时。我在控制器中使用$interval函数实现计时器功能。我也取消了同样的页面销毁。这是下面的片段 $scope.obj.updateProgressBar = function () { $scope.obj.showTimer = true; intervalPromise = $in

我有一个应用程序,其中我必须显示一个页面超时计时器进度条。我正在使用$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);   
$scope.obj.updateProgressBar=函数(){
$scope.obj.showTimer=true;
intervalPromise=$interval(函数(){
如果($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';
}否则{
$scope.obj.timeout=true;
$interval.cancel(intervalPromise);
$scope.togglePopup();
$scope.open('sm','sessionTimeoutTemplate');
}
},1000,时长+1);
};
$scope.obj.updateProgressBar();
}
$scope.$on(“$destroy”,函数(){
如果(间隔承诺)
$interval.cancel(intervalPromise);
}))

请帮助我,我能做些什么来破坏$interval

谢谢,
Tushar

是否调用$destroy?如果设置断点,$destroy事件中intervalPromise的值是多少?是否多次调用
updateprogressBar
?如果是这样,您将只取消最后一次间隔,而不是之前的间隔