我有一个输入字段,我想显示一个简单的计数器(每秒更新)。
<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,然后间隔似乎不会继续更新。
或者我是否需要创建服务?如果是这样,有人可以指出我需要设置该服务的正确方向,以便将更新计数值返回给控制器。
任何帮助都会像往常一样受到赞赏。
答案 0 :(得分:1)
您需要在$scope.$apply()
回调中使用setInterval
,以便更新值。
$scope.updateCount = function() {
$scope.ss++;
$scope.$apply();
}
通常建议使用$timeout
而不是setInterval
(因为它不需要$apply
),这是一种很好的方法:https://stackoverflow.com/a/14238039/1266600。