我有工厂服务:
app.factory('sessionInjector', ['sessionService', 'stateService', '$q', function (sessionService, stateService, $q) {
var myInjectorInstance = { /* ... */ };
return myInjectorInstance;
}]);
现在我为我的模块定义提供者
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('sessionInjector');
}]);
现在在dialogService中想要用户角度的$ http提供程序来读取html文件。 但我得到了那个例外:
Circular dependency found: $http <- dialogService <- sessionService <- sessionInjector <- $http <- $templateRequest <- $compile
dialogService用于sessionService。 dialogService看起来像这样:
app.service('sessionService', function ($http, $window, $compile) {
/* some code */
}
有没有办法在dialogService中使用$ http提供程序而不会抛出错误?
答案 0 :(得分:0)
有没有办法在dialogService中使用$ http提供程序而不会抛出错误? 是
如何强>
而不是将$http
注入dialogService
,您必须注入注射器...... $injector
然后您可以在进样器范围内执行一个函数。像这样:
$injector.invoke(function ($http) { // <- injecting $http
// make an http call
});
以下是官方文档:$injector
答案 1 :(得分:0)
要解决这样的循环依赖关系,您可以使用$injector
手动注入依赖项并分配给变量
app.service('sessionService', function ( $window, $compile, $injector) {
var $http = $injector.get('$http');
}