问题描述
如果有任何类型的错误,我的服务器将其传递给浏览器时,我将获得非常有意义且功能强大的错误消息.但是我如何在下面访问该信息:
I have incredibly meaningful and powerful error messages that my server passes to the browser if there was any kind of error. But how do I access that info in the following:
$rootScope.$on("$routeChangeError", function (event, current, previous, rejection) {
console.log(rejection); // "An unknown error has occurred."
});
我在路由定义中使用了$ routeProvides.resolve,因此,如果这些承诺没有解决,则$ routeChangeError将成为我的处理方式.我是否可以通过某种方式访问服务器的响应并以某种方式显示该响应?
I'm using $routeProvides.resolve in my route definitions, and so $routeChangeError was going to be my way of handling if those promises didn't resolve. Is there for a way for me to access the response from the server and display that somehow?
谢谢!
推荐答案
resolve对象的每个属性都应该是一个返回promise的函数.因此,如果您的一条路线不能解决,在.catch
处理程序中抛出原因会将错误信息传递给$ routeChangeError处理程序
Each property on a resolve object should be a function that returns a promise. So if one of your routes doesn't resolve, throwing a reason in the .catch
handler will pass your error information to the $routeChangeError handler
$routeProvider
.when("/foo", {
templateUrl: "foo.html",
controller: "fooController",
resolve: {
message: function($http){
return $http.get('/someUrl').
then(function(response) {
return response.data;
}).
catch(function(response) {
throw response.data;
});
}
}
});
假设data参数包含您要使用的服务器中的数据,它将最终出现在$ routeChangeError事件的拒绝参数中.
Assuming the data parameter has the data from the server you want to use, this will end up in the rejection parameter on the $routeChangeError event.
这篇关于如何将更有意义的错误信息传递给$ routeChangeError?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!