2

皆さん、

私は自分のコード全体で使用$http.get$http.postています。これらの呼び出し中に発生するエラーをグローバルな方法で処理する方法について、私はちょっと迷っています。現在、私は.success(doSomething).error(doSomething)すべての電話に出ています。

これを変更して、代わりにページの一番上にエラーを表示したいと思います。

でのインターセプターの使用について読みましたmyapp.something。しかし、これを実装する方法がまったくわかりません。

よろしくお願いします

4

1 に答える 1

6

応答インターセプターは、angularjs アプリの構成段階でアタッチされます。それらを使用して、任意の $http リクエストにグローバルに応答できます。テンプレート ファイルも $http リクエストを使用することに注意してください。そのため、インターセプターで一部のリクエストをフィルタリングして、応答したいリクエストのみを表示することができます。

応答インターセプターを正常に使用するには、 promiseパターンを十分に理解する必要があります。

それらの使用方法の例を次に示します。

angular.module('services')
    .config(function($httpProvider){
        //Here we're adding our interceptor.
        $httpProvider.responseInterceptors.push('globalInterceptor');
    })
    //Here we define our interceptor
    .factory('globalInterceptor', function($q){
        //When the interceptor runs, it is passed a promise object
        return function(promise){

            //In an interceptor, we return another promise created by the .then function.
            return promise.then(function(response){
                //Do your code here if the response was successful

                //Always be sure to return a response for your application code to react to as well
                return response;
            }, function(response){
                //Do your error handling code here if the response was unsuccessful

                //Be sure to return a reject if you cannot recover from the error somehow.
                //This way, the consumer of the $http request will know its an error as well
                return $q.reject(response);
            });
        }
    });
于 2013-07-17T00:00:41.987 に答える