Выполните различные вызовы (последовательно), используя Backbone.Collection и jQuery Deferred.

0

Я использую код, как показано ниже.

var firstCollection = new FirstCollection();
$.when( firstCollection.fetch( params1 )).done(function() {

    // here firstCollection has been enriched. It contains the actual data.
    // params2 will depends on firstCollection attirbutes

    var secondCollection = new SecondCollection();
    $.when( secondCollection.fetch( params2 ) ).done(function() {

        // here secondCollection has been enriched. It contains the actual data.
        // move to another screen

    }).fail( function() {

    } );

}).fail(function() {

}).always(function() {

});

Моя цель состоит в том, чтобы выполнить два вызова в последовательности, т. firstCollection Выполнить выборку firstCollection а затем выборку secondCollection. Мотивация заключается в том, что вторая выборка зависит от атрибутов firstCollection.

Поэтому мой вопрос заключается в следующем. Есть ли лучшая альтернатива для достижения этого с помощью jQuery Deferred или решение, которое я использую, является правильным?

Теги:
jquery-deferred
backbone.js

1 ответ

0

Может быть, что-то вроде этого:

var firstCollection = new FirstCollection();
var secondCollection = new SecondCollection();

this.listenTo(firstCollection, 'reset', scndfetch);

firstColllection.fetch(params1).then(function(data){  })

scndfetch = function(){
secondCollection.fetch(params2).then(function(data){
    //data has model/collection
});
}

Когда коллекция загружается, происходит событие синхронизации/сброса. Слушайте это, и secondCollection может начать загрузку.

  • 0
    Спасибо за ответ. Есть ли другой подход, которому нужно следовать?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню