我正在实现一个 angularjs 服务,它将$http
调用发送的数据保存在localStorage
. 为了做到这一点,我使用了请求拦截器,这样每当通过 发送 http 请求时$http
,数据就会保存在localStorage
. 下面是我的拦截器代码,
var OfflinkJs = angular.module('OfflinkJs', []);
OfflinkJs.factory('cacheInterceptor', function () {
var cacheInterceptor = {
request: function (config) {
// Here I am saving the config as a string in localstorage
return config;
}
};
return cacheInterceptor;
});
为了使上述拦截器正常工作,我必须将其注册interceptors
到$httpProvider
. 我这样做是为了实现这一点,
OfflinkJs.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('cacheInterceptor');
}]);
问题
现在,当我OfflinkJS
在另一个模块中使用模块时,所有$http
调用都通过我的拦截器。但是我想让$http
服务发送的一些请求使用我的拦截器,而其他一些请求则不使用。
由于$http
服务是一个单例,我无法弄清楚如何在我的应用程序的不同位置使用它的两个实例。有什么办法可以做到这一点?
我经历了这个问题,但似乎它确实解决了循环依赖的问题