2014-02-06 10 views
5

Ich habe nach einer Möglichkeit gesucht, die HTTP-Fehler zu verwalten, die ich in meiner eckigen Anwendung haben kann. Ich habe sie separat aufgenommen, aber ich würde sie gerne global verwalten. Ich verwende $ ressource und $ http für meine http Aufrufe. Gibt es eine Möglichkeit, sie global zu verwalten?

Antwort

3

Versuchen $http interceptor:

von den docs Zitat:

angular.module('app',[]).config(function($httpProvider){ 

    $httpProvider.interceptors.push(function($q, dependency1, dependency2) { 
     return { 
     'request': function(config) { 
      return config; 
     }, 

     'response': function(response) { 
      // do something on success 
      return response || $q.when(response); 
     }, 
     'responseError': function(rejection) { 
     // do something on error 

      return $q.reject(rejection); 
     } 
     }; 
    }); 
}); 
0

Sie können globale Fehler erfassen:

angular.module('app').factory('Interceptor',function($q) { 

    'use strict'; 


    function success(response) { 

     return response; 
    } 

    function error(response) { 

     if (response.status === 401) { 
     var deferred = $q.defer(); 
     // here you can broadcast or do anything you want 
     return deferred.promise; 
     } 
     // otherwise 
     return $q.reject(response); 
    } 

    return function (promise) { 

     return promise.then(success, error); 
    }; 
}); 



angular.module('app').config(function($urlRouterProvider, $locationProvider, $stateProvider, $httpProvider) { 
    $httpProvider.responseInterceptors.push('Interceptor'); 
}); 
+0

Response-Abfangjäger ist veraltet. http://docs.angularjs.org/api/ng.$http –

Verwandte Themen