2014-09-13 57 views
0

我有看起來服務喜歡以下內容:如何避免多次執行的服務中的查詢(獲取)?

var chatServices = angular.module('chatServices', ['ngResource']); 

chatServices.factory('Chat',['$resource', 
    function($resource){ 
    return $resource('sample-chat-data.json', {}, { 
     query: {method:'GET', params:{}, isArray:true} 
    }); 
    } 
]); 

我有兩個控制器,一個用於主,一個用於詳細視圖:

chatListApp.controller('ChatItemsController', ['$scope', 'Chat', "$location", 
    function ($scope, Chat, $location) { 
     $scope.chatitems = Chat.query(); 
     $scope.detailPage = function (hash) { 
     $location.path(hash); 
     } 
    }]); 

    chatListApp.controller('ChatDetailController', ['$scope', "$routeParams", "Chat", 
    function ($scope, $routeParams, Chat) { 
     $scope.chatID = $routeParams.chatID; 
     $scope.chatitems = Chat.query(function() { 
     for (var i = 0; i < $scope.chatitems.length; i++) { 
      if ($scope.chatitems[i].id === $scope.chatID) { 
      $scope.chat = $scope.chatitems[i]; 
      break; 
      } 
     }; 
     }); 
    }]); 

我有一種感覺,我的代碼是遠不是最優的,原因是我做了兩次相同的查詢。有沒有一個聰明的方法來做到這一點?我可以以某種方式將我的服務的結果保存/緩存到變量中嗎?

你可以看到完整的代碼和SPA那裏的在線工作示例:https://github.com/gkatsanos/angular-demo

回答

0

打開你的緩存

chatServices.factory('Chat',['$resource', 
    function($resource){ 
    return $resource('sample-chat-data.json', {}, { 
     query: {method:'GET', params:{}, isArray:true,cache : true} 
    }); 
    } 
]); 
+0

因此節省我的一個變量返回的結果是不是一種選擇? – 2014-09-13 08:17:54

+1

實際上用變量做它並不是那麼準確的方式,因爲爲了保存請求我們已經有了chache標誌,爲什麼不用它呢? :)它對我來說更簡單,更好 – 2014-09-13 08:19:53

相關問題