是否可以在服务上获取数据json,目前我在我的productdetail控制器上使用它。第二,当我打开我的产品列表页面时,它会请求json。当我转到详细产品页面时,再次请求json。我认为它只需要一次请求。如果那样,为什么我必须多次请求相同的json。有没有办法要求json一次?
services.js
.factory('Product', ['$http', function($http){
return{
get: function(callback){
return $http.get('https://raw.githubusercontent.com/vicariosinaga/learn/master/products.json').then(function(response){
return response.data;
});
}
};
}])
productctrl
angular
.module('app')
.controller('productCtrl',['$scope', 'Product', function($scope,Product) {
$scope.title="List Product";
Product.get().then(function(data) {
$scope.products = data;
});
}]);
productdetailctrl
.controller('productDetailsCtrl',['$scope','$stateParams', 'Product', function($scope,$stateParams,Product){
$scope.id=$stateParams.id;
Product.get().then(function(data) {
$scope.singleItem = data.filter(function(entry){
return entry.id === $scope.id;
})[0];
// console.log($scope.singleItem);
// console.log($stateParams);
});
}]);
答案 0 :(得分:0)
获取后缓存json。如果缓存,则从缓存中返回else fetch。
.factory('Product', ['$http', function($http,$q){
var service = {};
service.get: function(callback){
if(service.productJSON){
return $q(function(resolve,reject){
resolve(service.productJSON);
})
}
else{
return $http.get('https://raw.githubusercontent.com/vicariosinaga/learn/master/products.json').then(function(response){
service.productJSON =
return response.data;
});
}
}
return service;
}])