【发布时间】:2014-03-03 23:33:07
【问题描述】:
我正在尝试将 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
【问题讨论】:
-
你得到什么循环依赖错误?你能提供可运行的代码吗?为什么使用指令或控制器会破坏目的? (它打败了哪个目的?)
-
我正在制作一个全局 http 拦截器,当连接出错时会显示一个模式。这不应该依赖于向 html 添加指令,而是允许开发人员简单地包含工厂并收工。错误是:未捕获错误:[$injector:cdep] 找到循环依赖:$modal
-
对我来说听起来像是一个模块。开发人员将能够将他们的应用程序设置为依赖于该模块,并可能在其中声明一个指令并称其为一天。这不是太多的工作,这就是指令的用途。
-
代码确实位于导入的模块中。我只是想在我的代码中使用一个简单的服务。忘记 $modal 服务做任何 DOM 的事情,我只需要知道如何使用该服务。
-
我在您发布的代码中看不到任何需要
$modal... 我认为循环依赖是因为$modal需要$http并且您正在尝试设置拦截器。你能发布更多代码吗?你是如何设置你的$http拦截器的?RetryCall的完整定义是什么?您在哪里需要$modal?
标签: javascript angularjs twitter-bootstrap angular-ui angular-ui-bootstrap