2012-05-25 13 views
6

Nach dem Dokument hier: http://documentcloud.github.com/backbone/#FAQ-events Sammlung hat Synchronisierungsereignis ausgelöst, wenn ich etwas zur Synchronisierung der Sammlung mit dem Server tun. Ich versuche, die Methode fetch bei der Sammlung aufzurufen und darauf zu warten, aber es kommt nie vor. Add event wird ausgelöst, aber ich brauche nur ein Ereignis, nachdem alle Elemente in der Sammlung synchronisiert wurden, um die entsprechende Ansicht zu aktualisieren. Es gibt eine andere Möglichkeit, dieses Ereignis ausgelöst zu bekommen?Backbone.js Synchronisierungsereignis in der Sammlung

Antwort

2

Ich glaube, das "Sync" -Ereignis wird nur ausgelöst, wenn Sie ein Modell ändern. Wenn Sie also ein Modell erstellen, aktualisieren oder löschen, wird das Ereignis "sync" ausgelöst.

In Ihrem Fall, ich denke, Sie wollen für das "Reset" -Event auf der Sammlung zu hören.

Bearbeiten: Wenn Sie die Option {add:true} festlegen, gibt es kein einzelnes Backbone-Ereignis, das ausgelöst wird, nachdem alle Modelle hinzugefügt wurden. Sie haben ein paar Optionen:

  1. Hören Sie einfach auf das add Ereignis und erwarten, dass es durch die Verwendung eines Handler wiederholt
  2. emulieren ein einzelnes Ereignis aufgerufen werden, die mit der Funktion _.debounce() entprellt worden ist.
  3. Der Rückgabewert von fetch() ist ein jQuery XMLHttpRequest-Objekt. Es implementiert die jQuery Deferred Schnittstelle. Sie könnten also auf dieses Ziel hören. Zum Beispiel:

    myCollection.fetch({add:true}).done(function(){ 
        myView.render(); //or whatever 
    }); 
    
+0

Reset-Ereignis ist nicht meine Bedürfnisse, weil ich fetch mit add: true-Parameter aufrufen. –

5

Die Lösung ist Sync-Ereignis maunually in ‚Erfolg‘ Callback als param Methode zu holen weitergegeben zu feuern.

this.collection.fetch({add: true, success: function(collection, response){ 
      collection.trigger('sync'); 
}}); 
+1

Ab dem Backbone 0.9.9 wird das Hinzufügen eines Synchronisierungstriggers beim Erfolgsrückruf nicht mehr benötigt. Von http://backbonejs.org/#changelog Konsolidierte "Sync" und "Fehler" -Ereignisse innerhalb von Backbone.sync. Sie werden jetzt unabhängig von der Existenz von Erfolgs- oder Fehlerrückrufen ausgelöst. –

Verwandte Themen