2016-12-09 18 views
0

是否可以在服務上獲取數據json,目前正在使用我的productdetail控制器。第二,當我打開我的產品列表頁面時,它請求json。當我去詳細的產品頁面時,再次請求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

緩存取出後的JSON。如果緩存,則從緩存返回,否則獲取。

.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; 

}]) 
相關問題