Oi pessoal! Eu encontrei uma solução simples e perfeita para a realização do carregador de páginas para projetos AngularJS.
angular('myModule').factory('loaderToggle', ['$rootScope', '$timeout', function($rootScope, $timeout) {
return {
'request': function(config) {
// I suppose that $rootScope.loader variable used in ng-show directive
if (config.withloader) $rootScope.loader = true;
return config;
},
'response': function(response) {
if (response.config.withloader) {
// timeout for avoid loader blinking
$timeout(function () {
$rootScope.loader = false;
}, 500);
}
return response;
}
}
}]);
// then inject our factory into angular config
angular.module('myModule').config(['$httpProvider', function($httpProvider) {
// our config lines...
// then add loaderToggle factory to interceptors array
$httpProvider.interceptors.push('loaderToggle');
}]);
Em seguida, basta adicionar withloader prop a $ resource config:
angular.module('myModule')
.factory('Posts', function($resource, BACKEND_URI, PERPAGE_LOAD_LIMIT, $rootScope) {
var $res = $resource(
BACKEND_URI + "/post:action?json&token=" + $rootScope.token,
{action: '@action'},
{
list: {method: 'GET', params: {action: '/', offset: 0, perpage: PERPAGE_LOAD_LIMIT}, withloader: true},
add: {method: 'POST', params: {action: '/new'}, withloader: true},
edit: {method: 'POST', params: {action: '/change_status'}, withloader: true}
}
);
return $res;
});
E isso é tudo! Funciona para AngularJS 1.2.20.