使用$ http的方法装饰服务

时间:2015-04-15 15:28:51

标签: angularjs angular-decorator

我试图用另一种方法装饰服务。问题是该方法使用$http,我无法注入angular.config块,因为它尚未初始化。

我以为我可以通过使用$injector解决这个问题,因为这只会在调用我添加的方法时运行,但这会导致错误:

Error: [$injector:unpr] Unknown provider: $http

以下是我要做的一个例子:

angular.module('someModule', [])

.config(($provide, $injector)->  
  $provide.decorator('someService', ($delegate)->   
    $delegate.newMethod = ()->
      $http = $injector.get('$http')
      $http.get('someURL')
    return $delegate
  )
)

稍后,只有当我拨打someService.newMethod()时才会收到上述错误。

有没有办法做我想做的事情?

1 个答案:

答案 0 :(得分:3)

显然,$injector也需要注入装饰器,所以这将解决它:

angular.module('someModule', [])

.config(($provide, $injector)->  
  $provide.decorator('someService', ($delegate, $injector)->   
    $delegate.newMethod = ()->
      $http = $injector.get('$http')
      $http.get('someURL')
    return $delegate
  )
)