0

В моем приложении есть следующий код,Магистраль работает метод, основанный на коллекции слушателю

initialize: function() { 
    Pops.Collections.TeamCollection = this.collection; 
    this.collection.fetch(); 

    this.collection.on('sync', this.render, this); 
}, 

render: function() { 
    this.addAll(); 
    return this; 
}, 

его говорит само за себя, принести коллекцию после того, как он синхронизируется с сервером запустить сбор визуализации. На момент написания этой последовательности кода это казалось хорошей идеей, однако теперь это выглядит так, что когда я сохраняю модель коллекции, она запускает прослушиватель синхронизации и снова выполняет рендеринг. Это не то поведение, которое я хочу. Есть ли другой прослушиватель, который я могу использовать для прослушивания завершения первоначальной выборки?

+2

u может слушать 'reset' и fetch с флагом' fetch ({reset: true}) ', но это не 100% от начальной выборки. Не уверен, но я постараюсь предоставить некоторый дополнительный флаг в fetch 'fetch ({initial: true})' и проверить его в обратном вызове 'this.collection.on ('sync', function (opt) {opt.initial && this. render}, this); ' – Evgeniy

+0

Вы также можете передать функцию визуализации как обратный вызов успеха методу выборки –

ответ

0

Согласно магистральным документациям,

Backbone.sync это функция, которая Backbone называет каждый раз, когда он пытается прочитать или сохранить модель на сервер.

Событие по существу является «уловкой» для любых операций CRUD, сообщающихся с сервером, поэтому его увольняют на сохранение модели. Глядя глубже в документацию дает подсказку о том, как .fetch() работает

Когда вернется модель данных с сервера, он использует набор для (разумно) объединить неправдоподобные модели, если вы не передаете {Сброс: истинно}, в котором если сбор будет (эффективно) сброшен.

По пересматривает свой призыв к this.collection.fetch({reset: true}), коллекции будет загружать данные и огнь reset события, которое можно слушать вместо sync. Это решит вашу проблему.