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,我会这样做