取消路线变更的所有$超时

时间:2015-09-14 17:59:44

标签: angularjs timeout

$timeout.cancel($scope.dataTimeout);

    });

这里是destroy函数,我想取消所有$ scope.dataTimeout。目前它只取消$ timeout。

$ scope。$ on(“$ destroy”,function(){

puts "Please tell me the array(separated by space, finish by enter twice):"
x = []
input = ' '
while input != ''
  input = gets.chomp
  x.push input
end

puts x.sort

1 个答案:

答案 0 :(得分:3)

由于您是在循环中执行此操作,因此每次迭代都会覆盖$scope.dataTimeout,因此它只包含对最后$timeout的引用

您需要创建一个数组,以便能够全部访问它们。

 var dataTimeout=[];

然后在循环中:

var timeOut = $timeout(function () {
       fetchStatus(job);
}, 1000);

dataTimeout.push( timeOut );

最后取消它们全部循环遍历数组并取消每个实例:

$scope.$on("$destroy", function () {
    dataTimeout.forEach(function(timeout){
       $timeout.cancel(timeout);    
    });
});