1

我在我的angular js web應用程序中有以下代碼片段。意圖是在控制器中使用緩存來使應用程序更快。無法在Angular JS中正確使用緩存

我已經定義在我services.js文件以下緩存工廠這是通過在我的應用幾個控制器被利用:

appServices.factory('AppCache', ['$cacheFactory', function($cacheFactory){ 
     return $cacheFactory('app-cache'); 
}]); 

現在我在我的控制器中的一個的以下代碼:

appControllers.controller('pageController', ['$scope', 'AppCache', 'AnotherService', 
    function pageController($scope, AppCache, AnotherService) { 

     $scope.init = function() { 

      if (angular.isUndefined(AppCache.get('d'))) 
      { 

       AnotherService.get({}, 
         function success(successResponse) { 
          $scope.data = successResponse.response.r; 
          AppCache.put('d', $scope.data); 
         }, 
         function error(errorResponse) { 
          console.log("Error:" + JSON.stringify(errorResponse)); 
         } 
       ); 
      } 
      else 
       $scope.data = AppCache.get('d'); 
} 
} 

問題是我無法保存或檢索緩存中的任何數據。由於沒有檢索到數據,因此當我使用上述代碼時,我的頁面變爲空白。

請幫我理解我的錯誤。

+0

什麼是變量'D'?你是否認爲這是一個字符串「D」?還有在您的瀏覽器控制檯中記錄的任何錯誤? – Rhumborl

+0

是的,它是字符串'd'。但是我仍然看到我的應用程序正在爲了得到結果而不是從角度緩存中獲取結果而觸及數據庫。 – coderx

回答

0

您將您的緩存命名爲'app-cache',並且您嘗試通過'd'訪問它。在控制器中,只需更換'd''app-cache',它應該工作:

appControllers.controller('pageController', ['$scope', 'AppCache', 'AnotherService', 
    function pageController($scope, AppCache, AnotherService) { 

     $scope.init = function() { 

      if (angular.isUndefined(AppCache.get('app-cache'))) 
      { 

       AnotherService.get({}, 
         function success(successResponse) { 
          $scope.data = successResponse.response.r; 
          AppCache.put('app-cache', $scope.data); 
         }, 
         function error(errorResponse) { 
          console.log("Error:" + JSON.stringify(errorResponse)); 
         } 
       ); 
      } 
      else 
       $scope.data = AppCache.get('app-cache'); 
      }