答案 0 :(得分:1)
setTimeout()
不属于任何有角度的核心服务或指令。每当您从核心外部更改范围时,您需要使用$apply()
。
出于这个原因,angular $timeout
是setTimout()
的包装,会在内部调用$apply()
更改为:
angular.module('sample', [])
.directive('countdown', function ($timeout) {
function CountdownController() {
var countdownController = this;
countdownController.digit = 5;
$timeout(function () {
console.log('fired');
countdownController.digit = 200;
}, 3000);
}
return {
restrict: 'E',
controller: CountdownController,
controllerAs: 'countdownController',
bindToController: true,
template: '{{countdownController.digit}}'
}
});
的 DEMO 强>
答案 1 :(得分:0)
如果您想在一段时间间隔后每次更改模型
使用 $ interval 代替 setTimeout()
angular.module('sample', [])
.directive('countdown', function () {
function CountdownController($interval) {
var countdownController = this;
countdownController.digit = 5;
$interval(function () {
console.log('fired');
countdownController.digit = 200;
}, 3000);
}
return {
restrict: 'E',
controller: CountdownController,
controllerAs: 'countdownController',
bindToController: true,
template: '{{countdownController.digit}}'
}
});