我正面临以下问题:
在我的AngularJS应用程序中,我有服务,包括数据和功能,刷新它们
angular.module('testService', ['ui.router'])
.factory('testService', function($http) {
var service = {};
var _baseUrl = 'http://127.0.0.1:8000/api/v1/test/';
service.orders = {created: 0, approved: 0};
/*
* get number of unprocessed orders
*/
service.updateNOrders = function(){
var tableName = 'orders?stats=true';
$http({
method: 'GET',
url: _baseUrl + tableName,
}).success(function(data){
service.orders = data;
console.log(data);
return;
}).error(function(err){
alert(JSON.stringify(err));
return;
})
}
});
我可以将此服务注入ie指令并调用函数updateNOrders
来更新指令中的数据。
但我想要的是服务每隔n
秒调用一次这个函数。
服务在几个指令中共享,而不是每个指令,负责更新数据,我希望服务自己做。
我尝试过像:
angular.module('testService', ['ui.router'])
.factory('testService', function($http, $q, $rootScope, $interval) {
$interval(console.log('test'),1000);
/*
rest of the code
*/
});
但这不起作用。
那么 - 是否可以每分钟左右调用updateNOrders
内的testService
函数?
答案 0 :(得分:0)
为什么不在一定的时间间隔内从控制器调用服务功能。
$interval(testService.functionName,1000);
答案 1 :(得分:0)
创建具有副作用的服务是个坏主意。最好使用通过回调设置间隔的方法创建服务。然后你可以在运行回调中注入你的服务(只运行一次callback回调):
angular.module('testService', ['ui.router'])
.factory('testService', ['$interval', function($interval) {
var service = {};
service.doPeriodicAjaxRequest = doPeriodicAjaxRequest;
function doPeriodicAjaxRequest() {
$interval(yourCode, ...);
}
return service;
}]);

然后:
angular.module('', [])
.run(['testService', function (testService) {
testService.doPeriodicAjaxRequest();
}]);