首页 > 解决方案 > 使用 $scope.$watch 处理 $interval.cancel 不起作用

问题描述

下面我用 $interval 处理了一个计时器函数,我想在我的标志设置为 true 时取消计时器,实际上我的请求必须运行多次,直到我的标志设置为 true。这个场景实际上是用于上传文件,我通过单击导出按钮多次打开导出请求,所以到那时我的计时器将被调用,它会寻找我data.stauscomplete,直到我的状态完成它将运行。因为我在这里使用手表,它只适用于最新的导出请求和单击的上一个导出请求不会调用我的 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();

}

}
]);

标签: angularjs

解决方案


推荐阅读