2016-06-17 8 views
1

私は、http例外をキャッチして処理する私のangularjsアプリケーション用のHTTPインターセプタを持っています。要求からエラーをキャッチしてそこで処理し、エラーがインターセプタにバブリングしないようにするケースがいくつかあります。誰にどのようにこれが可能かもしれないか知っていますか?ここ はインターセプタです:angularjsがhttpインターセプタへのバブリングを防止します

angular.module('x') 
    .factory('HttpErrorHandlerFactory', ['$q', '$rootScope', function ($q, $rootScope) { 
     return { 
      'responseError': function (rejection) { 
       if (rejection.status == 0) return $q.reject(rejection); 
       if (rejection.data === '') 
        rejection.data = 'Error'; 
       $rootScope.Message.Value = rejection.data; 
       return $q.reject(rejection); 
      } 
     }; 
    }]); 

これは、アプリケーションレベルで設定されているので、通過任意のHTTPリクエストはこのによってキャッチされています。エラーの場合は、メッセージをキャッチしてメッセージを表示します。あなたは本当に、呼び出し元の関数はありません前にエラーをキャッチから迎撃を防ぐカント

someFactory.GetSomething(scope.id) 
       .success(function (result) { 
        //do something with result 
       }).error(function(error){ 
        //MY QUESTION IS, HOW TO GET THIS ERROR TO NOT BUBBBLE UP TO THE INTERCEPTOR 
       }); 
+0

もっと具体的にする必要があります。私たちは迎撃者が何をしているのか分かりません。関連コードを提供 – charlietfl

答えて

0

私の知る限り:

は通常、我々はこのような電話を持っています。確かにそれは迷惑です。

私の解決策は、特定のHTTP要求(呼び出し元からのエラーを処理したいもの)に設定オブジェクトを追加することでした。例えば

restangular使用している場合:

myRestangularObject.get().withHttpConfig({handleByCaller: true}) 

と私のインターセプタ上:

if (rejection.config.handleByCaller && rejection.config.handleByCaller === true) { 
    return $q.reject(rejection); 
    } 

を私が言ったように私は、これはハックであり、あなたの質問に答えていないことを知っているが、私はドン最初に傍受者が処刑されるのを避けることができると思います。

+0

返事をありがとうが、私は脚を使用していません。それを使用しない他のアイデアですか? – rleffler

関連する問題