Backbone.Collection.fetch():
fetch: function(options) {
options = options ? _.clone(options) : {};
if (options.parse === void 0) options.parse = true;
var success = options.success;
options.success = function(collection, resp, options) {
var method = options.update ? 'update' : 'reset';
collection[method](resp, options);
if (success) success(collection, resp, options);
};
return this.sync('read', this, options);
},
Was ist also hier oben ist, sie in Funktion übergeben wird var succees
zugeordnet.
collection[method](resp, options);
Ist aufgerufen und in Ihrem Fall ist die Methode 'reset'
.
collection.reset
muss gehen und alle Ihre Modelle hinzufügen, feuern alle Ereignisse auf dem Weg. Ich weiß nicht genau, was passiert, aber es geht durch collection.reset
, collection.add
, model.add
, etc ... Ich habe es nicht alles folgen.
Ich bin mir nicht sicher, was das Problem genau ist, tut mir leid. Ich hoffe, ich kann dir wenigstens helfen, einige Dinge auszuprobieren, vielleicht können wir es herausfinden. Die Zeile if (success) success(collection, resp, options)
ist der Aufruf Ihrer Erfolgsfunktion. Was Sie könnten versuchen, zu tun ist Ihr Erfolg Rückruf der übergebenen zurück Argumente Kauf nehmen zu müssen und einige tröstend die tun out:
success: function(collection, resp, options) {
console.log(collection); // this might do the trick.
// if not, you could try the following
collection.on("reset", function(c, options) {
console.log(c); // see what that gives ya.
});
}
Eine andere Sache ist, ich konnte nicht überall in der Quelle oder die Dokumentation, wo collection.fetch finden nimmt eine Add-Option. Wenn ich es verpasst habe, lass es mich wissen, ich würde es gerne sehen.
Viel Glück, lassen Sie mich wissen, was Sie finden. Es könnte sich auch lohnen, einen Schritt durch den Debugger zu machen.
Scheiße, es scheint mir auch, dass Konsole hat mir oft die aktuellste Version von Sammlungsobjekten gezeigt, wenn es nicht haben sollte.
versuchen, die Längen der Sammlungen statt oder etwas tröstlich aus:
var len = $this.Messages.length;
console.log(len);
//...
// or in the success callback
var len = collection.length;
console.log(len);
Haben Sie verifiziert, dass die Daten tatsächlich im get-Aufruf zurückgegeben werden? – kinakuta
Suchen Sie nur nach den neu hinzugefügten Modellen in '$ this.Messages' im' success' Callback? Wenn ja, sind Sie sicher, dass, wenn 'success' aufgerufen wird, die Sammlung die Antwort bereits geparst und zur Sammlung hinzugefügt hätte? –