Позвольте мне начать с того, что я нахожусь в нулевом уголке, поэтому я подозреваю очень тупую ошибку, основанную на моем непонимании.Перехватчик Angularjs 1.4 не работает
Я пытаюсь создать перехватчик для обработки запросов и ошибок ответа.
Если я поставил предупреждение в верхней части файла, он вызывается, поэтому файл загружается. Но никто из других предупреждений, включая нижнюю часть файла и до конфигурации, не вызван. ОтветError и requestError никогда не вызываются ...
Я пробовал упростить его до минимума, который воспроизводит проблему, я пробовал несколько разных примеров того, как реализовать его, если я использовал устаревший код, я попробовал комментировать условие ошибки в контроллере, если он проглотил исключение ..... Я большую часть дня пытаюсь разобраться в этом, пытаясь заставить это работать, и я в тупике.
$provide.factory('myHttpInterceptor', function ($q, dependency1, dependency2) {
return {
'responseError': function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
},
'requestError': function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
}
};
});
alert('myHttpInterceptor done');
module.config(['$httpProvider', function ($httpProvider) {
alert('myHttpInterceptor push');
$httpProvider.interceptors.push('myHttpInterceptor');
}]);
любой помощь, особенно по отношению к твердому пониманию того, что происходит очень ценится
---- связанный ответ информации для потомков ----
На основе комбинации на sbedulins и Angad ответы Я смог получить это работы.
Во-первых, как только я получил это работает он работал с и без одинарные кавычки вокруг responeError и RequestError ...
dependency1 и 2 были определены и ошибки вырезания и вставки из упрощенного примера я получил здесь ТАК. Поэтому я удалил их.
Затем я заменил модуль на angular.module ('defaultApp'), поэтому модуль является заполнителем в примерах, а не каким-то удобным глобальным хранилищем ... вам нужно явно определить ваш модуль (или переменный модуль) (да я на самом деле, что новый для угловой)
так, как только все эти изменения были применены к примерам sbedulins, я получил рабочий код здесь для обоих подходов, для postetity вот мой actyual рабочий код из моего приложения
angular.module('defaultApp').config(['$provide', '$httpProvider', function ($provide, $httpProvider) {
$provide.factory('myHttpInterceptor', function ($q) {
return {
responseError: function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
},
requestError: function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
}
};
});
$httpProvider.interceptors.push('myHttpInterceptor');
}]);
OR
angular.module('defaultApp').config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(function ($q) {
return {
'responseError': function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
},
'requestError': function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
}
};
});
}]);
Спасибо за тонну за вашу помощь, я узнал важные вещи о сокращении углов в примерах. sbedulin получает ответ, даже если мне нужна помощь от комментариев, чтобы получить его/ее ответ на работу
попробуйте удалить одинарные кавычки из 'requestError' и 'responseError' –
как вы определяете 'module'?Также где определены 'dependency1',' dependency2' (они вводятся в ваш перехватчик) – Angad