使用clearInterval()不会重置计时器

时间:2015-04-23 08:10:32

标签: javascript jquery angularjs timer

这是我的计时器功能

var myTimer = setInterval(function () {
    var d = new Date();

    var seconds = d.getMinutes() * 60 + d.getSeconds();
    var fiveMin = 60 * 5;
    var timeleft = fiveMin - seconds % fiveMin;
    var result = parseInt(timeleft / 60) + ':' + timeleft % 60;
    //console.log(result);
    var timerObj = {
        timer : result
    }
    $scope.timerArray = timerObj;
    $scope.$apply();

    if (timeleft === 1) { 
        $scope.statusDetails = [];
        $scope.timeDetails();
        $scope.get_dbStatus();                  
    }

}, 1000);

单击按钮时,此功能将重置上述计时器。

$scope.refreshStatusList = function(){
    $scope.hide = true;
    $scope.$emit('LOAD');
    clearInterval(myTimer);
    $scope.statusDetails = [];
    $scope.timeDetails();
    $scope.get_dbStatus();  
};

这是我点击html页面时的刷新按钮,计时器必须重置。

<div class="col-lg-2">
    <a href="#" title="Refresh" ng-click="refreshStatusList();">
        <i class="fa fa-refresh fa-lg"></i>
    </a>
</div>

2 个答案:

答案 0 :(得分:2)

由于您使用的是,因此您应使用$interval指令,该指令将在内部调用$scope.apply()

用法

$scope.intervalPromise = $interval(function () {
    //Your code
}, 1000);

清除间隔

$interval.cancel($scope.intervalPromise);

答案 1 :(得分:0)

尝试使用此

$scope.apply();