在我的应用程序中,我正在为$log
编写一个装饰器,以便我可以自定义$log
的功能,包括调用第三方服务。第三方服务为其内部活动注入$q
。现在这会导致循环依赖性错误:
Uncaught Error: Circular dependency: $q <- tploggerService <- $log <- $exceptionHandler <- $rootScope
。
因为qProvider
使用最终使用exceptionHandlerProvider
的{{1}},我认为这会导致此问题。在装修过程中是否有任何人遇到类似的问题,是否有解决方案来解决这个或不同的模式来解决这个问题?
以下是代码的简单演示,感谢您的帮助:
logProvider
答案 0 :(得分:1)
从您的服务中获取$ q:
function tploggerService ($injector) {
var $q;
this.info = function (data) {
$q = $injector.get('$q');
var deferred = $q.defer(); //Yes using defered object. some this performs some actions and some internal stuffs.
//Doing something...
};
}
答案 1 :(得分:0)
似乎你只能在$provider.decorator()
中进行$委托,我想如果你应该把除了使用注入方式之外的业务逻辑放在装饰器函数中。例如:
$provider.decorator('$log',function($delegate){
$delegate.info = function(){
var args = Array.prototype.slice(arguments);
var deferred = $q.defer(); //Doing something...
$delegate.info.apply(null,args);
}
});