Angular:如何有效地检索数据

时间:2015-05-07 22:47:28

标签: 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)
            .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的{​​{1}}集合中的字段,但我有storeName在项目集合中。 我的问题是我如何使用storeId来获取数据库中每个storeId的商店数据?

1 个答案:

答案 0 :(得分: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个实例做了一些假设,但您应该明白这一点。