【问题标题】:ui-router "The transition was ignored" during state transitionui-router 在状态转换期间“转换被忽略”
【发布时间】:2018-04-15 06:38:02
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    可以使用trans.error() 从转换中检索错误详细信息。该值是一个Rejection 对象。在您的 onError 处理程序中,检查拒绝的类型。例如,您可以选择仅当拒绝类型为“错误”时才重定向:

    $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

    【讨论】:

    • 我已更新文档以更好地反映此信息。待下个版本的ui-router发布后即可使用。
    • 是的,非常感谢,我的做法有点类似:if (transitionError.type !== 5) $state.go("main.transition-error")
    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多