我尝试使用ng-notifications-bar模块,我有这样的代码:
angular.module('app', [
uiRouter,
Common.name,
Components.name,
angularMaterial,
'ngTable',
'gridster',
'ngNotificationsBar'
])
.factory('$exceptionHandler', ['notifications', function(notifications) {
return function(exception, cause) {
notifications.showError({message: exception});
};
}]);
但出现错误:
[$ injector:cdep]找到了循环依赖项:$ rootScope <-通知<-$ exceptionHandler <-$ rootScope <-$ timeout <-$$ rAF <-$ mdGesture
我试图修改库以使用
$injector
获取$ timeout和$ rootScope,但这也无济于事,也尝试使用$injector
在notifications
工厂获取$exceptionHandler
却出现了相同的错误。 最佳答案
从角度来看,这是一个很差的设计。由于依赖性,您不能以任何形式将$rootScope
注入$exceptionHandler
中。
您可以使用$injector
来解决这类(无法使用的)依赖性问题,您只需要确保在return函数内部使用注入的模块即可确保在调用从属模块已实际加载。例如:
// won't not be available here
var rootScope = $injector.get('$rootScope');
return function(exception, cause) {
// will be available here
var rootScope = $injector.get('$rootScope');
};
这是因为
.get()
用于在运行时获取依赖项。关于javascript - Angular-使用ngNotificationsBar时发现循环依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39829556/