在AngularJS中创建一个简单的计时器

时间:2013-09-05 22:55:54

标签: javascript angularjs

我有一个输入字段,我想显示一个简单的计数器(每秒更新)。

<input class="form-control input-lg" type="text" placeholder="00" ng-model="ss">

启动/停止按钮每个都在控制器中有相关的ng-click方法

查看

<button ng-click="start()">Start</button>

我可以在控制器功能中完成一个计数器吗?

$scope.start = function() {

};

我试过这样的事情

$scope.start = function() {
    if($scope.counting === true) return false;
    $scope.counting = true;
    $scope.counter = setInterval($scope.updateCount, 1000);
};

$scope.updateCount = function() {
    $scope.ss++;
}

但是当调用start函数时,该值不会持续更新输入ng-model='ss'。它只是将其设置为1,然后间隔似乎不会继续更新。

或者我是否需要创建服务?如果是这样,有人可以指出我需要设置该服务的正确方向,以便将更新计数值返回给控制器。

任何帮助都会像往常一样受到赞赏。

1 个答案:

答案 0 :(得分:1)

您需要在$scope.$apply()回调中使用setInterval,以便更新值。

$scope.updateCount = function() {
    $scope.ss++;
    $scope.$apply();
}

通常建议使用$timeout而不是setInterval(因为它不需要$apply),这是一种很好的方法:https://stackoverflow.com/a/14238039/1266600

相关问题