您可以为可以在任何需要它的地方注入的特殊服务构建一个特殊服务,或者您只需将它放在$rootScope
. 通常,您应该避免将事物置于$rootScope
全局状态,这通常是代码异味。但是,如果这确实是您需要的,那么这可能适合您的需求。
您可以简单地将该代码放在一个run
块上,以便在加载模块后立即执行它。
myModule.run(['$rootScope', function($rootScope){
setInterval(function(){
$rootScope.now = new Date().getTime();
}, 1000)
}]}
请注意,按照我编写上面代码的方式,Angular 不会收到有关该更改的通知。但是,每秒通知 Angular 更改可能不是您想要的,因为它可能会导致严重的性能问题。只是为了澄清一下:如果您确实希望 Angular 收到有关更改的通知并更新所有绑定,则需要将变量 update 包装在$apply
调用中。
myModule.run(['$rootScope', function($rootScope){
setInterval(function(){
$rootScope.$apply(function(){
$rootScope.now = new Date().getTime();
});
}, 1000)
}]}
另请注意,大多数情况下您都希望避免setInterval
,因为处理之间的时间可能是不确定的。大多数时候setTimeout
更适合。深入探讨这个答案超出了这个答案的范围,但如果你想阅读该主题,我建议阅读 John Resig 关于该主题的帖子: http: //ejohn.org/blog/how-javascript-timers-work/