In meiner backbone.js App gibt es eine Trips collection
, die gilt Trip models
und mit der funktioniert LocalStorage
. Ich kann anrufen Trips.create(form_attributes)
, um eine Reise zum zu erstellen und zu speichern Todos store
.
Wenn ich meine App zum ersten Mal lade, rufe ich an Trips.fetch({ success: trips_fetch_success })
und trips_fetch_success
erhalte eine Antwort, die zeigt, Trip models
dass die App Trips collection
hält.
Ich habe versucht , zu binden refresh
und change
Ereignisse an die Trips collection
, aber diese Ereignisse nicht erwischt zu werden, mich zu machen glauben , dass ich die falsche Vorstellung darüber , welche Ereignisse haben Trips.fetch
Trigger.
Meine Frage: Welche Ereignisse sollen Trips.fetch
auslösen? Und werden die Ereignisse in der Sammlung oder in jedem Einzelnen ausgelöst Trip models
?
quelle
Collection#refresh
wurde umbenannt zuCollection#reset
. Die Veranstaltung wird ebenfalls entsprechend umbenannt.reset
Rückruf zwei Standardargumente enthält"reset" (collection, options)
und ausgelöst wird, wenn der gesamte Inhalt der Sammlung ersetzt wurde. "Wenn Sie Backbone 1.0 verwenden, müssen Sie reset: true im Aufruf von fetch () übergeben, um eine Bindung mit dem Reset-Ereignis herzustellen:
trips.fetch({reset: true});
quelle
Ab Backbone 1.0 löst model.fetch () eine 'Synchronisation' aus. Daran sollten Sie sich binden.
Hier ist der relevante Teil aus der Quelle backbone.js, in dem das 'Sync'-Ereignis ausgelöst wird:
fetch: function(options) { options = options ? _.clone(options) : {}; if (options.parse === void 0) options.parse = true; var model = this; var success = options.success; options.success = function(resp) { if (!model.set(model.parse(resp, options), options)) return false; if (success) success(model, resp, options); // HERE'S THE TRIGGER! model.trigger('sync', model, resp, options); }; wrapError(this, options); return this.sync('read', this, options); },
quelle