如何避免来自服务的查询(get)被多次执行
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}
});
}
]);
相关文章:
- 如何使用get或post方法连接和执行ajax
- jQuery在$.get数据完成后执行作业
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 嵌套在 .get 请求中的 jQuery 不会执行
- jQuery $.get() JSON 函数正在执行,但不会产生任何结果
- 如何执行Ajax GET请求以从rails获取数据并将其传递给javascript(谷歌地图)
- 得到"来自(127.0.0.1'33187)“;当使用$.ajax执行get请求时
- 皮赛德.JavaScript.以纯文本或 html 的形式执行 js 和 get 结果
- 为什么我的PHP函数没有由jQuery $.get执行
- 同步 JavaScript 调用节点 js- 执行 GET in for 循环
- 在 php 中为特定的 get 请求执行 javascript
- AngularJS:使用 ngResource 执行 GET 请求时的状态代码 0
- http.get 请求未执行
- Javascript 多次执行 onload “GET” 方法
- jQuery GET 方法测试执行
- POST 和 GET 在 MVC 4 中同时执行
- 执行get()解析查询结果并执行另一个数据库调用
- I'我使用Node和jQuery制作了一个简单的天气刮除器,但我的GET语句是't按预期执行.控制台中没
- 在javascript中,循环是在get方法执行之前执行的
- 代码的其他部分在$http.get完成之前执行