2015-05-07 32 views
-1

我有一個工廠獲取的所有項目在我的數據庫:角度:如何檢索數據高效

.factory('items', function($resource, VAS_API_URL, $q) { 
     return { 
     getItems: function() { 
      var deferred = $q.defer(); 
      var url = VAS_API_URL + 'api/items'; 
      $resource(url) 
      .query(function(items) { 
       deferred.resolve(items); 
      }, function(response) { 
       deferred.reject(response); 
      }); 
      return deferred.promise; 
     } 
     }; 
}) 

我把這個工廠在控制器和顯示這樣的觀點的項目:

.controller('itemCtrl', function($scope, $state, items) { 

    $scope.item= items.getItems(); 
    $scope.item.then(
    function(items) { 
     $scope.items= items; 
    }, 
    function(response) { 
     console.log('error fetching the items', response); 
    } 
); 
}) 

,但在我展示的所有times了同樣的觀點,我想顯示提起不存儲在item集合稱爲storeName的,但我的項目集合中的storeId。 我的問題是我如何使用storeId來獲取我從數據庫中獲得的每個item的商店數據?

+0

從API獲取它(假設你可以)?我不確定我明白你在問什麼 – Phil

+0

問題是什麼時候我打電話給物品工廠我得到的所有物品我如何迭代他們使用storeId打電話給另一個工廠,通過編號取得商店 –

回答

0

初始承諾解決後,只需獲取額外的數據。例如

.factory('items', function($resource, VAS_API_URL) { 
    return $resource(VAS_API_URL + 'api/items'); 
}) 

.factory('store', function($resource, VAS_API_URL) { 
    return $resource(VAS_API_URL + 'api/store', { id: '@id' }); 
}) 

.controller('itemCtrl', function($scope, items, store) { 
    $scope.items = items.query(function(items) { 
     angular.forEach(items, function(item) { 
      item.store = store.get({id: item.storeId}); 
     }); 
    }); 
}); 

注意,我做你的API和您創建的任何其他$resource情況下,一些假設,但你應該明白我的意思。

+0

我想通了我的方式使用angular.forEach,但你認爲這是獲取數據的最佳方式,或者我應該將soteName存儲在項目集合中,以減少HTTP調用? –

+0

@AhmadElmoualem更少的HTTP請求總是更好,所以是的,如果你可以改變API,我會這樣做 – Phil

+0

是的,我可以,我會。謝謝。 –