2017-09-29 17 views
0

私は、401が捕捉されるたびにサインイン状態にする必要があるHTTPInterceptorを持っています。私の問題は、ほとんど同じ時間に始まるAPIへの3つの非同期呼び出しがあることです。移行拒否角UIルーター

移行除去($番号:0タイプ:6、メッセージ:エラー状態遷移、詳細: "未定義")

それらのすべては401を返した場合、私は、次のメッセージでエラーが発生しましたIVEは、これまでに試した何

switch (response.status) { 
    case 401: 
    let url = $location.absUrl(); 
    // This condition supposed to prevent 
    // going to signin state again after a response of 401. 
    // Not really sure if ui-router will navigate still on the same 
    // state. So maybe this condition is not needed? 
    if (url.indexOf('sign-in') !== -1) { 
     deferred.reject(response.data.error); 
    } else { 
     if ($transitions._transitionCount === 1) { 
     $state.go('signin'); 
     } 
    } 
    break; 

がtransitionCountをチェックすることですが、それでもエラーが続く:

は、これは私の迎撃のために私のコードです。

ありがとうございます!

+1

でこのタイプのエラーを処理することができます( 'サインイン')をもう一度?それは正常に動作するはずです –

+0

OKチェック、ありがとう! – iamjc015

+0

まだ動作しません。 – iamjc015

答えて

0

UI-Routerのレガシーでは、ユーザーは多くの場合、解決が "スワローエラー"となることを訴えました。エラーは$ stateChangeErrorイベントの として出力されましたが、アプリケーションがイベントを受信しないことがありました。

UI-Router 1.0では、デフォルトのエラーハンドラを追加しました。 $ state.go()への呼び出しに失敗すると、エラーが StateService.defaultErrorHandlerに渡されます。

あなたはおそらく `$のstate.current`をチェックし、それはすでにかどう` signin`はその後、 `$ state.goをしない

$state.defaultErrorHandler(function(error) { 
// This is a naive example of how to silence the default error handler. 
console.log(error); 
}); 

Details

関連する問題