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
因此節省我的一個變量返回的結果是不是一種選擇? – 2014-09-13 08:17:54
實際上用變量做它並不是那麼準確的方式,因爲爲了保存請求我們已經有了chache標誌,爲什麼不用它呢? :)它對我來說更簡單,更好 – 2014-09-13 08:19:53