![](/img/trans.png)
[英]How can I stop a javascript function (poll) from being executed multiple times?
[英]How do I avoid a query (get) from a service being executed multiple times?
我提供的服務如下所示:
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
打開緩存
chatServices.factory('Chat',['$resource',
function($resource){
return $resource('sample-chat-data.json', {}, {
query: {method:'GET', params:{}, isArray:true,cache : true}
});
}
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.