我的要求是我必须使用angular来存储大量数据以进行分页。这些数据将来自服务器端。我们怎么能用角度来做呢? 提前谢谢。
答案 0 :(得分:0)
如果要缓存数据,可以通过多种方式进行缓存。其中两种方法是here: -
使用简单的$ http inbuild缓存(上面link中的详细信息)。
$ http.get(url,{cache:true})。success(...);
使用$ cacheFactory(上面link中的详细信息)
只需将其缓存在您的服务中: -
服务: -
var todoApp = angular.module("todoApp",[]);
todoApp.factory('dbService', ['$q','$http',function ($q , $http) {
var service ={};
service.localCache = {hasdata:false,data:{},lastLoaded:new Date()};
service.getUrl = function (urlToGet,burstCache) {
var svc=this;
var deferred = $q.defer();
if ((!burstCache)&&(svc.localCache)&&(svc.localCache.hasdata)) {
console.log('resolve from local cache');
return(svc.localCache.data);
}else{
var responsePromise = $http.get(urlToGet);
responsePromise.success(function (data, status, headers, config) {
svc.localCache={};
svc.localCache.hasdata=true;
svc.localCache.data=data;
svc.localCache.lastLoaded= new Date();
deferred.resolve(data);
console.log('resolve from ajax') });
responsePromise.error(function (data, status, headers, config) {
deferred.reject({ error: "Ajax Failed", errorInfo: data }); svc.localCache={}; });
}
return (deferred.promise);
}
return service;
}]);
控制器: -
todoApp.controller("ToDoCtrl",['$scope','$timeout','dbService',function($scope, $timeout, dbService)
{
$scope.todo={};
//Fetches the data from server. 'true' means burstCache
$timeout(function(){
dbService.getUrl('/api/userdata',true).then(function(resp){
$scope.todo=resp;
});},1);
//ReLoads the data from cache
$scope.reLoad=function(){
$scope.todo={};
$timeout(function() {$scope.todo=dbService.getUrl('/api/userdata');},1000);
};
}]);