使用$ scope。$ watch处理$ interval.cancel不起作用

时间:2019-01-21 05:45:47

标签: angularjs

下面我用$ interval处理了一个计时器函数,当我的标志设置为true时我想取消计时器,实际上我的请求必须运行多次直到我的标志设置为true。这种情况实际上是用于上传文件,我通过单击导出按钮多次打开导出请求,因此将调用我的计时器,它将寻找我的data.stauscomplete,直到状态完成为止。由于我在这里使用watch,因此它仅适用于最新的导出请求,并且单击的上一个导出请求不会调用我的stoptimer函数。

  angular.module('timerApp', ['timerApp.controllers']);
  angular.module('timerApp.controllers', []).controller('timerController', ['$scope', '$interval',
      function($scope, $interval) {
        var timer;
        var time = 10;
        $scope.countdown = time;
        $scope.stopTimer = function() 
        {
        $interval.cancel(timer);
         };



 $scope.startTimer = function() {
  timer = $interval(function() {
  $scope.countdown--;
//res is response from my backend
   var data = res;
   if (data.status = "complete"){
      $scope.timerFlag = true;
     }
    }, 15000, time);
         timer.then(function() {
        $scope.countdown = time;
      });
    };

  }

$scope.$watch(){
if($scope.timerFlag == true){
 $scope.stopTimer();

}

}
]);

0 个答案:

没有答案