Javascript 当我使用route从一个状态转到另一个状态时,$interval将继续运行
我有一个应用程序,其中我必须显示一个页面超时计时器进度条。我正在使用$interval执行此操作。但是,当我从一个状态转到另一个状态时,$间隔不会被清除,并且显示上一页的会话超时。我在控制器中使用$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
$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
?如果是这样,您将只取消最后一次间隔,而不是之前的间隔