Обработка ошибок кода состояния AngularJS AJAX

0

У меня есть перехватчик:

angular.module('mobileDashboardApp')
    .factory('HTTPInterceptor', function ($rootScope, $q, HTTPErrors) {
        return {
            responseError: function (response) {
                $rootScope.$broadcast({
                    500: HTTPErrors.serverError,
                    503: HTTPErrors.serviceError
                }[response.status], response);
                return $q.reject(response);
            }
        };
    })

Здесь определяются константы:

angular.module('mobileDashboardApp')
    .constant('HTTPErrors', {
        serverError: 'internal-server-error',
        serviceError: 'service-error'
    })

Как я могу запустить $ rootScope. $ Для выполнения console.log всякий раз, когда есть ошибка 500?

В моей конфигурации я добавил перехватчик, используя:

.config(function ($httpProvider, $routeProvider) {
    $httpProvider.interceptors.push([
        '$injector',
        function ($injector) {
            return $injector.get('HTTPInterceptor');
        }
    ]);
Теги:

1 ответ

0

Из того, что я понимаю, вы передаете HTTPErrors.serverError строки HTTPErrors.serverError на статус 500 и HTTPErrors.serviceError строки HTTPErrors.serviceError на статус 503. Таким образом, вы можете поймать их, указав этот код на любом контроллере, который вы хотите подписаться на эти события

$rootScope.$on(HTTPErrors.serverError, function(event, args){
    console.log("500");
});
$rootScope.$on(HTTPErrors.serviceError, function(event, args){
    console.log("503");
});

конечно, вам нужно ввести HTTPErrors в этот контроллер.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню