8 Mart 2013, Cuma
AngularJS - birden fazla kaynak sorgularını tamamlamak için bekleyin
Tek bir fabrika ngResource ile tanımlıyorum:
App.factory('Account', function($resource) {
return $resource('url', {}, {
query: { method: 'GET' }
});
});
Sorgu yöntemi bu fabrika üzerinde tanımlanmış birden çok çağrı yapıyorum. Zaman uyumsuz olarak çağırır olabilir, ama her iki aramalar için Devam etmeden önce tamamlamak için beklemek istiyorum:
App.controller('AccountsCtrl', function ($scope, Account) {
$scope.loadAccounts = function () {
var billingAccounts = Account.query({ type: 'billing' });
var shippingAccounts = Account.query({ type: 'shipping' });
// wait for both calls to complete before returning
};
});
Orada AngularJS fabrikaları ngResource, DV benzer ile tanımlanan bunu yapmak için bir yoldur.$.().() işlevi? Benim geçerli proje için jQuery eklemek istemiyorum.
CEVAP
8 Mart 2013, Cuma
Sözler ve $q.all() kullanmak isteyeceksiniz.
Temelde, kaynak $tüm sarmak için kullanabilirsiniz ya $http sözlerini geri dönmek için çağırır.
function doQuery(type) {
var d = $q.defer();
var result = Account.query({ type: type }, function() {
d.resolve(result);
});
return d.promise;
}
$q.all([
doQuery('billing'),
doQuery('shipping')
]).then(function(data) {
var billingAccounts = data[0];
var shippingAccounts = data[1];
//TODO: something...
});
Bunu Paylaş:
Böyle büyük mükafat uyarı: "Birde...
Nasıl birden fazla çalıştırmak için .B...
Nasıl aynı yazı tipi için yazı tipi bi...
Nasıl bir dize C / birden fazla satır ...
Nasıl bir HTML kabı için birden fazla ...