ui-router在状态转换期间“过渡被忽略”

时间:2018-04-15 06:38:02

标签: javascript angularjs error-handling angular-ui-router angular-routing

我想为我的应用的某些状态设置常规错误处理程序,例如main.*,并且如果状态resolves中的任何一个失败,则希望将用户重定向到常规错误页面。

我设置了以下错误处理程序:

  $transitions.onError({to: "main.*"}, function (trans) {                   
       $state.go("transition-error")
  });

但如果我点击链接说<a ui-sref="main.profile"> profile </a>,并且转换成功并且我第二次点击该链接,我的错误处理程序将被执行,并显示错误消息:"The transition was ignored",如何当出现这样的错误时,我可以阻止我的错误处理程序执行吗?为什么我收到此错误?

enter image description here

1 个答案:

答案 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

相关问题