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

Rat*_*hma 3 javascript error-handling angularjs angular-routing angular-ui-router

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

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

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

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

在此处输入图片说明

Chr*_*s T 5

可以使用从过渡中检索错误详细信息 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");
   }
});
Run Code Online (Sandbox Code Playgroud)

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