问题
I'm trying to implement a very standard task: when an exception occurs, redirect to my /error
page.
In a simplified form the code looks like this:
app.factory('$exceptionHandler', ['$location', function($location) {
return function(exception, cause) {
$location.path("/error");
};
}]);
However, AngularJS complains: Circular dependency found: $location <- $exceptionHandler <- $rootScope
This looks like a fundamental limitation, not to allow use of $location
when handling exceptions.
But how else can we do it then?
回答1:
To get around this you need to call the $injector
manually to resolve the dependency at runtime:
app.factory('$exceptionHandler', ['$injector', function($injector) {
var $location;
return function(exception, cause) {
$location = $location || $injector.get('$location');
$location.path("/error");
};
}]);
来源:https://stackoverflow.com/questions/19554624/location-from-exceptionhandler-dependency-conflict