如何在angularjs中存储数据以进行分页并将其作为响应发送

时间:2015-02-04 05:46:36

标签: angularjs

我的要求是我必须使用angular来存储大量数据以进行分页。这些数据将来自服务器端。我们怎么能用角度来做呢? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果要缓存数据,可以通过多种方式进行缓存。其中两种方法是here: -

  1. 使用简单的$ http inbuild缓存(上面link中的详细信息)。

    $ http.get(url,{cache:true})。success(...);

  2. 使用$ cacheFactory(上面link中的详细信息)

  3. 只需将其缓存在您的服务中: -

  4. 服务: -

        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);
    
        };
        }]);