AngularJS - 使用 requestAnimationFrame 的简单倒计时 (start/stop/restart)
AngularJS - simple Count-Down using requestAnimationFrame (start/stop/restart)
这是小plnkr
我正在尝试打印倒数秒 from 11 to 0
和 then restart
完成后。
问题是它不会在 html 中打印秒数也尝试使用 $apply
但我得到摘要错误。
另外,在重新开始倒计时时我遇到了问题,秒没有正确更新...
我怎样才能更轻松地实现这一目标?
感谢任何帮助,谢谢
问题出在requestAnimationFrame
。 Angular 不知道应该绑定新值,而且我认为这里不需要动画帧。尝试用 $timeout 替换动画帧,然后 angular 将知道应该重新绑定数据。 plnkr
给你
(function withAngular(angular) {
'use strict';
angular.module('app', ['ngRoute'])
.controller('Ctrl', function($scope, $window, $timeout) {
$scope.countSeconds = 11;
$scope.updateCountdown = function updateCountdown(ms) {
$timeout(function() {
if($scope.countSeconds === 0){
$scope.countSeconds = 11;
}
else{$scope.countSeconds--; }
$scope.updateCountdown($scope.countSeconds);
}, 1000);
};
$scope.updateCountdown(0);
});
}(angular));
这是小plnkr
我正在尝试打印倒数秒 from 11 to 0
和 then restart
完成后。
问题是它不会在 html 中打印秒数也尝试使用 $apply
但我得到摘要错误。
另外,在重新开始倒计时时我遇到了问题,秒没有正确更新...
我怎样才能更轻松地实现这一目标?
感谢任何帮助,谢谢
问题出在requestAnimationFrame
。 Angular 不知道应该绑定新值,而且我认为这里不需要动画帧。尝试用 $timeout 替换动画帧,然后 angular 将知道应该重新绑定数据。 plnkr
给你
(function withAngular(angular) {
'use strict';
angular.module('app', ['ngRoute'])
.controller('Ctrl', function($scope, $window, $timeout) {
$scope.countSeconds = 11;
$scope.updateCountdown = function updateCountdown(ms) {
$timeout(function() {
if($scope.countSeconds === 0){
$scope.countSeconds = 11;
}
else{$scope.countSeconds--; }
$scope.updateCountdown($scope.countSeconds);
}, 1000);
};
$scope.updateCountdown(0);
});
}(angular));