我试图将bootstrap-ui $ modal服务注入到我的工厂中,但是当我这样做时,我遇到了循环依赖问题,而当我没有定义$ modal时。代码如下:
retryModule = angular.module('g4plus.retry-call', ['ui.bootstrap'])
retryModule.factory 'RetryCall', ($q, $rootScope)->
requests = {}
failedRequests = {}
uniqueId = 0
modalInstance = undefined
modalClose = true
### Some more code
alertUser = ()->
modalInstance = $modal.open
template: """
<div class="modal-dialog">
... Some more code ...
如何在工厂中使用$ modal?请不要要求我将此代码放入指令中,因为这样做会违反目的。如果我可以将其放入指令中,那么我已经完成了该项目。控制器也是如此。
谢谢!
如果我将$ modal注入工厂,则循环依赖错误为:
未捕获的错误:[$ injector:cdep]找到循环依赖项:$ modal
最佳答案
原始评论:在您发布的代码中我看不到任何需要$modal
的内容。我认为循环依赖是因为$modal
要求$http
且您正在尝试设置拦截器。您能再发布更多代码吗?您如何设置$http
拦截器? RetryCall
的完整定义是什么?您在哪里需要$modal
?
可能的答案:将拦截器创建为普通的AngularJS服务(将其称为yourHttpInterceptor
,然后通过使用添加它
yourAngularModule.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('yourHttpInterceptor');
}]);
或者,您可以创建一个匿名工厂
yourAngularModule.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(['$modal', function($modal) {
return {
request: function(config) {
// Do something...
},
...
}
}]));
}]);
关于javascript - 在服务Angularjs中使用服务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22159834/