Angularjs 如何从控制器获取单个$interval()调用
我希望我的控制器每分钟刷新一些服务(需要调用Web服务),因此我写道:Angularjs 如何从控制器获取单个$interval()调用,angularjs,Angularjs,我希望我的控制器每分钟刷新一些服务(需要调用Web服务),因此我写道: angular.module('App').controller('dashboardCtrl', function($scope, $interval, ServiceOne, ServiceTwo, ServiceThree) { ServiceOne.init(); ServiceTwo.init(); ServiceThree.init(); //... n this.ref
angular.module('App').controller('dashboardCtrl', function($scope, $interval, ServiceOne, ServiceTwo, ServiceThree) {
ServiceOne.init();
ServiceTwo.init();
ServiceThree.init();
//... n
this.refreshServices = function() {
ServiceOne.refresh();
ServiceTwo.refresh();
ServiceThree.refresh();
//... n
};
$interval(funcion() {
var self = this;
self.refreshServices();
});
});
问题是,控制器被角度触发2次,因此2$interval
同时工作
如何避免这种情况?首先,$timeout只会在您设置的时间用完时执行一次刷新 在我看来,这种逻辑不属于控制器内部,应该移到模块的.run()块中,或者移到服务本身中 $timeout 对于重复发生的事件,最好使用$interval: $interval#! $interval的示例给出了如何避免间隔启动两次的示例 在模块文档页面上签出.run()
谢谢你闯入
$interval()
我没有找到它,所以我想angular只使用了$timeout()
。当我只想刷新其中一个时,我的服务中就有这种逻辑,但现在我有很多,我认为控制器是最好的地方<代码>运行也可以是一个选项,但应用程序将始终使用此处理,即使不需要(当我们在另一个视图上时)。