我想创建一个将创建an interface to AngularJS's $http
based on this.的服务我想使用依赖注入来注入服务,而无需重新编写单个函数调用并保持代码清洁。为此,我提供了一个公共服务,它为$ http对象创建一个变量,如下所示:
commonService = function(...) {
return {
...
$http: $http
}
然后我在代码中到处使用common.$http
。要将AngularJS $ http中的$ http更改为我的httpService,我只需要在一个地方更改它。 httpService看起来像这样:
function httpService($http, $q, pendingRequests, $interval) {
var get = function(url) {
...
return requestPromise;
};
var service = {
get:get
};
return service;
}
这适用于拨打$http.get()
但是对$http({method:'get', url:'...'});
的呼叫怎么办?
是否可以提供()方法,这实际上是httpService()()?否则它将调用AngularJs方法httpService()。
答案 0 :(得分:2)
您只需返回一个函数而不是一个对象。您可以将属性添加到您的函数
function httpService($http, $q, pendingRequests, $interval) {
var get = function(url) {
...
return requestPromise;
};
// Instead of returning an object, return a function
var service = function() {
// do whatever you want here
};
service.get = get;
// Add more properties to service as needed
return service;
}