我正在尝试实施一项非常标准的任务:发生异常时,重定向到我的/error
页面。
以简化形式,代码如下所示:
app.factory('$exceptionHandler', ['$location', function($location) {
return function(exception, cause) {
$location.path("/error");
};
}]);
然而,AngularJS抱怨说: 找到循环依赖项:$ location< - $ exceptionHandler< - $ rootScope
这似乎是一个基本限制,不允许在处理异常时使用$location
。
但我们还能怎么做呢?
答案 0 :(得分:45)
要解决此问题,您需要手动调用$injector
以在运行时解决依赖关系:
app.factory('$exceptionHandler', ['$injector', function($injector) {
var $location;
return function(exception, cause) {
$location = $location || $injector.get('$location');
$location.path("/error");
};
}]);