SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amena

    Amena

    15 Kasım 2006
  • Julia Graf

    Julia Graf

    6 Mayıs 2006
  • Lena Danya

    Lena Danya

    11 NİSAN 2010