Я вот так делаю
App.factory('MyService',
[ '$document','$q','$timeout','$log','$http','$rootScope',
function($document , $q , $timeout , $log , $http , $rootScope )
{
// КЕШ загруженных данных
var m_dataCache = {};
// Сервис
var service = {
// Загрузка данных
load : function(userID) {
// Загрузка файлов
var deferred = $q.defer();
//
if( angular.isDefined(m_dataCache[userID]) )
{
// Вернуть данные из КЕШ-а
deferred.resolve(m_dataCache[userID]);
}
else
{
// Загружаем данные
$http.post("/getUserInfo.php", {id : userID}).then(function (result) {
// Запомнить в КЕШ
m_dataCache[userID] = result;
// Вернуть данные
deferred.resolve(result);
}
}, function (reason) {
// Вернуть ошибку
deferred.reject(reason);
}
);
}
return deferred.promise;
}
};
return service;
}]
);
|