2013-07-16 3 views
2

Folks,

Я использую $http.get и $http.post всего моего кода. Я как бы теряю информацию о том, как обрабатывать ошибки, возникающие во время этих вызовов, глобально. В настоящее время у меня есть .success(doSomething).error(doSomething) на каждый звонок.

Я хотел бы изменить это и вместо этого просто показать ошибку поверх моей страницы.

Я читал об использовании перехватчиков с myapp.something. Но я совершенно не понимаю, как это реализовать.

Просьба помочь

ответ

6

перехватчики Response прикрепляются на этапе настройки в качестве angularjs приложения. Вы можете использовать их для глобального ответа на любой запрос $ http. Имейте в виду, что файлы шаблонов также используют запрос $ http, поэтому вы можете захотеть отфильтровать некоторые запросы в вашем перехватчике только теми, на которые вы хотите ответить.

Хорошее понимание шаблона promises необходимо для успешного использования ответных перехватчиков.

Вот пример того, как они используются:

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); 
      }); 
     } 
    }); 
+6

ВНИМАНИЕ !! Этот метод устарел. Следуйте этой ссылке для альтернативы, http://docs.angularjs.org/api/ng.$http – hjgraca

Смежные вопросы