我想为我的应用的某些状态设置常规错误处理程序,例如main.*
,并且如果状态resolves
中的任何一个失败,则希望将用户重定向到常规错误页面。
我设置了以下错误处理程序:
$transitions.onError({to: "main.*"}, function (trans) {
$state.go("transition-error")
});
但如果我点击链接说<a ui-sref="main.profile"> profile </a>
,并且转换成功并且我第二次点击该链接,我的错误处理程序将被执行,并显示错误消息:"The transition was ignored"
,如何当出现这样的错误时,我可以阻止我的错误处理程序执行吗?为什么我收到此错误?
答案 0 :(得分:4)
可以使用trans.error()
从转换中检索错误详细信息。该值是Rejection
个对象。在onError
处理程序中,检查拒绝的类型。例如,您可以选择仅在拒绝类型为“ERROR”时重定向:
$transitions.onError({to: "main.*"}, function (trans) {
var rejection = trans.error();
if (rejection.type === RejectType.ERROR) { // === 6
$state.go("transition-error");
}
});
https://ui-router.github.io/ng1/docs/latest/classes/transition.rejection.html#type
https://ui-router.github.io/ng1/docs/latest/enums/transition.rejecttype.html#error