1、在angular自定义一个服务
angular
.
module(
'inspinia')
.
factory(
'timestampMarker', [
"$rootScope",
function (
$rootScope) {
var timestampMarker
= {
request:
function (
config) {
$rootScope.loading
=
true;
console.log('发出请求')
config.requestTimestamp
=
new
Date().
getTime();
return config;
},
response:
function (
response) {
$rootScope.loading
=
false;
console.log('收到响应')
response.config.responseTimestamp
=
new
Date().
getTime();
return response;
}
};
return timestampMarker;
}]);
2、在config中注册这个服务,并添加到$httpProvider.interceptors
angular
.
module(
'inspinia')
.
config([
'$stateProvider',
'$urlRouterProvider',
'$ocLazyLoadProvider',
'$httpProvider',
function
config(
$stateProvider,
$urlRouterProvider,
$ocLazyLoadProvider,
$httpProvider) {
$httpProvider.interceptors.
push(
'timestampMarker');
}])
.
run(
function(
$rootScope,
$state) {
$rootScope.$state
= $state;
});
3、通过这个全局发送请求和收到响应的方法,可以在发送请求的时候做一些通用设置,比如请求加载、全局设置请求头headers等等。