Я использую angularjs, контроллер загрузки и регистрации, сервис и заводскую загрузку.
Мой файл конфигурации похож на Ответ Дэйва
который используется для регистрации и отлично работает.
Теперь я хочу создать отдельный файл, содержащий определение фабрики, которое загружается лениво и используется как перехватчик. Для этой же цели я создал функцию app.interceptor в конфигурационном файле, который имеет определение как
$httpProvider.interceptors.push('MyService');
но при отправке ajax-запроса он не будет вызывать.
Любая идея, почему не работает
Например: myapp.config.js
var app = angular.module('app', [])
app.config(
function($controllerProvider, $provide, $compileProvider) {
// Since the "shorthand" methods for component
// definitions are no longer valid, we can just
// override them to use the providers for post-
// bootstrap loading.
console.log("Config method executed.");
// Let's keep the older references.
app._controller = app.controller;
app._service = app.service;
app._factory = app.factory;
app._value = app.value;
app._directive = app.directive;
app.controller = function(name, constructor) {
console.log("controller...");
console.log(name);
console.dir(constructor);
$controllerProvider.register(name, constructor);
return (this);
};
// Provider-based service.
app.service = function(name, constructor) {
$provide.service(name, constructor);
return (this);
};
// Provider-based factory.
app.factory = function(name, factory) {
$provide.factory(name, factory);
return (this);
};
// Provider-based value.
app.value = function(name, value) {
$provide.value(name, value);
return (this);
};
// Provider-based directive.
app.directive = function(name, factory) {
$compileProvider.directive(name, factory);
return (this);
};
app.interceptor = function(name) {
console.log("interceptor ----" + name)
$httpProvider.interceptors.push(name);
};
});
MyFactory.js
var app = angular.module('app');
app.interceptor('myfactory');
app.factory('myfactory', ['$q', '$location',function ($q, $location) {
return {
// optional method
request: function(config) {
// do something on success
console.log("request config");
console.log(config);
return config;
},
// optional method
requestError: function(rejection) {
// do something on error
console.log("requestError");
console.log(rejection);
return $q.reject(rejection);
},
// optional method
response: function(response) {
// do something on success
console.log("response response");
console.log(response);
return response;
},
// optional method
responseError: function(rejection) {
// do something on error
console.log("responseError");
console.log(rejection);
return $q.reject(rejection);
}
}
}]);