Angularjs 角循环依赖
这是我有史以来第一次面对这个问题,我在努力找出原因以及如何解决它 我有两个服务,service1和service2,但是很明显,有一个循环依赖关系如下:Angularjs 角循环依赖,angularjs,dependency-injection,circular-dependency,Angularjs,Dependency Injection,Circular Dependency,这是我有史以来第一次面对这个问题,我在努力找出原因以及如何解决它 我有两个服务,service1和service2,但是很明显,有一个循环依赖关系如下: serv1 <- serv2 <- serv1 服务2如下所示: angular.module('service1', []) .service 'serv1', ['$rootScope','$http','$location','serv2', function ($rootScope, $http, $location,
serv1 <- serv2 <- serv1
服务2如下所示:
angular.module('service1', [])
.service 'serv1', ['$rootScope','$http','$location','serv2',
function ($rootScope, $http, $location, serv2){
serv2.doMyOtherThing(...)
}
]
angular.module('service2', [])
.service 'serv2', ['$rootScope','$http','$location','serv1',
function ($rootScope, $http, $location, serv1){
serv1.doMyThing(...)
}
]
为什么存在循环依赖关系?我如何解决这个问题
每个服务都是特定的(serv1 variou实用程序和serv2 array实用程序),有时我需要将两者结合使用,但目前不可能
感谢您的帮助使用第三种服务,在其他服务中使用第三种服务 例如:
angular.module('service1',[])
.service 'serv1' [..,'servCommon', function(..,servCommon){}]
angular.module('service2',[])
.service 'serv2' [..,'servCommon', function(..,servCommon){}]
angular.module('serviceCommon',[])
.service 'servCommon' [.., function(..){}]
在该servCommon
中添加一些常用函数,并从其他两个函数中使用它们
希望这能有所帮助。如果你看到这一点,你就会明白:
...
.service 'serv1', ['$rootScope','$http','$location','serv2'
.service 'serv2', ['$rootScope','$http','$location','serv1',
serv1需要serv2和serv2需要serv1。这将训练循环依赖
所以你可以使用第三种服务
或者您可以这样解决此问题:
angular.module('service1', [])
.service 'serv1', ['$rootScope','$http','$location','serv2',
function ($rootScope, $http, $location, serv2){
serv2.doMyOtherThing(...)
}
]
angular.module('service2', [])
.service 'serv2', ['$rootScope','$http','$location','$injector',
function ($rootScope, $http, $location, $injector){
var serv1 = $injector.get('serv1');
serv1.doMyThing(...)
}
]
为什么首先会发生这种循环依赖性问题?我不想在其他服务中重复我的功能,老实说,在这里这样做似乎不是件好事。angular DI尝试将
serv1
注入serv2
,但是,虽然已经需要serv2
来注入serv1
,但是,请阅读更多关于DI和循环依赖性的内容如果你不想采用这种解决方法,那么你必须改变你的代码设计,这样就不会出现循环依赖性。我希望这会有所帮助。在我犯了一个小错误之前,我刚刚更新了答案:p