Javascript 在AngularJS中创建简单计时器

Javascript 在AngularJS中创建简单计时器,javascript,angularjs,Javascript,Angularjs,我有一个输入字段,我想显示一个简单的计数器(每秒更新) 我可以在控制器功能中实现计数器吗 $scope.start = function() { }; 我试过这样的东西 $scope.start = function() { if($scope.counting === true) return false; $scope.counting = true; $scope.counter = setInterval($scope.updateCount, 1000);

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

我可以在控制器功能中实现计数器吗

$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,然后间隔似乎不会继续更新

或者我需要创建一个服务吗?如果是这样的话,有人能告诉我如何设置该服务,以便将更新的计数值返回给控制器吗


我们将一如既往地感谢您的帮助。

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

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

通常建议使用
$timeout
而不是
setInterval
(因为这样可以避免使用
$apply
),下面是一个很好的方法:。

非常感谢-$apply正是我所需要的。函数最初使用$timeout,但我尝试了setInterval,认为问题可能与$timeout有关。感谢您的澄清和链接。在您看来,您认为这是服务的保证吗?除非您将其用作多个控制器中的可重用组件,否则创建一个服务可能是过火了:)除非有充分的理由不使用
$timeout
,您最好使用
$timeout
。@BrianGenisio我同意,答案已经指出了这一点。我的评论解释说,我只是在尝试setInterval,以防更新问题与$timeout服务有关。
$scope.start = function() {
    if($scope.counting === true) return false;
    $scope.counting = true;
    $scope.counter = setInterval($scope.updateCount, 1000);
};

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