我正试图在我的Angular应用程序中正确处理我的404错误。
重定向在这里工作正常但不知何故我无法在这里获得$ state url。 window.location.href
得到了印刷,但我没有得到$injector.get('$state').current.url
。
.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push([
'$q',
'$rootScope',
'$injector',
function($q, $rootScope, $injector) {
return {
'request': function(config) {
return config;
},
'responseError': function(response) {
console.log(window.location.href);
console.log($injector.get('$state').current.url);
//404 error handling
if (response.status === 404)
$injector.get('$state').go('404')
//500 error handling
if (response.status === 500)
$injector.get('$state').go('500')
return response;
}
};
}]);
}])
我无法弄清楚问题的来源。有没有人有想法?
非常感谢
答案 0 :(得分:1)
你真的想把它当成一个错误:?
如果是routeChange错误,你应该看看ui-router $stateChangeError
事件,当任何解析失败时会被触发
示例:
$rootScope.$on("$stateChangeError", function (event, to, toParams, from, fromParams, reason) {
// error handling code
// you can use params to retrieve from/to route
});
如果您想捕获任何类似代码片段的http请求,那么只有当ui-router有时间对其进行初始化时,您的代码才能正常工作..如果您不使用,则无法确定ui-router事件。