【发布时间】:2014-09-02 13:58:26
【问题描述】:
我想创建一个将创建an interface to AngularJS's $http based on this. 的服务我想使用依赖注入来注入服务,而无需重新编写单个函数调用并保持代码干净。为此,我提供了一个通用服务,它为 $http 对象创建一个变量,如下所示:
commonService = function(...) {
return {
...
$http: $http
}
然后我在代码中的任何地方都使用common.$http。要将 $http 从 AngularJS $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()。
【问题讨论】:
-
()不是一种方法。它只是调用一个返回的函数。如果这就是您想要的,那么只需返回一个执行您需要的任何操作的函数。 -
@major-mann 这是如何工作的?喜欢
$provide.decorator((), $http);? -
这是一篇博文,应该能让你继续前进solutionoptimist.com/2013/10/07/… :)
-
基本上 $provide.decorator( '$http', [ "$delegate", function( $delegate ) {} ...里面,$delegate就是原来的$http。
标签: javascript angularjs