Angularjs 角度:如何高效地检索数据

Angularjs 角度:如何高效地检索数据,angularjs,Angularjs,我有一个工厂获取数据库中的所有项目: .factory('items', function($resource, VAS_API_URL, $q) { return { getItems: function() { var deferred = $q.defer(); var url = VAS_API_URL + 'api/items'; $resource(url) .qu

我有一个工厂获取数据库中的所有项目:

    .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);
    }
  );
})
但在显示所有
时间的同一视图中,我想显示一个名为
storeName
item
集合中未存储的文件,但我在item集合中有
storeId

我的问题是如何使用
storeId
获取从数据库中获取的每个
项目的存储数据

解决初始承诺后,只需获取额外数据即可。比如说

.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
实例进行一些假设,但您应该了解这一点。

从API获取它(假设您可以)?我不确定我是否理解你在问什么我问的是当我调用items factory时我得到所有的项目我如何迭代它们使用storeId调用另一个工厂通过idI获取store我想出了使用angular.forEach的方法但你认为这是获取数据的最佳方法还是我应该将soteName存储在项目集合中对于更少的HTTP调用?@AhmadElmoualem更少的HTTP请求总是更好,所以是的,如果你能更改API,我会这样做