Ich habe einen Server, der mit einem Header ETag arbeitet. Backbone bezieht sich zum ersten Mal auf die API: Alles ist gut, die Antwort wird empfangen und parsen. Zweites Mal: Backbone sendet an den Server ETag, als Antwort erhält NotModified. Und Backbone versucht, diese Antwort zu analysieren, was zu einer Sammlung namens reset führt.Backbone.js analysieren nicht modifizierte Antwort
Gibt es einen Weg um die Sammlung zurückzusetzen?
Die Methode zum Hinzufügen der Option zum Hinzufügen in der Abrufmethode funktioniert nicht. Da muss ich die Sammlung komplett auffrischen, wenn ich auf die Antwort des Servers komme.
var recommendCollection = Backbone.Collection.extend({
model : Event,
etag : null,
urlRoot : '/api/users',
initialize: function() {
this.etag = null;
},
parse: function(response) {
return response.data;
},
url : function() {
return (this.urlRoot + "/"+window.me.get('id')+ "/recommendation");
},
beforeSend : function (jqXHR, settings) {
jqXHR.setRequestHeader('if-none-match', this.etag);
},
complete : function (jqXHR, textStatus) {
if (jqXHR.status == 200 || jqXHR.status == 304) {
this.etag = jqXHR.getResponseHeader('ETag');
}
},
update : function() {
this.fetch({
beforeSend : this.beforeSend.bind(this),
complete : this.complete.bind(this),
data : {
cityId : window.me.get('cityId'),
}
});
}
Die Dokumentation entwickelte sich, der zweite Parameter ist [jetzt dokumentiert] (http://backbonejs.org/#Collection-parse) und ist das 'options'-Objekt, das' xhr' enthält. Die erste Lösung müsste geändert werden in 'Parse: Funktion (Antwort, Optionen) { if (options.xhr.status === 304) Rückgabe this.models return response.data; } ' – flochtililoch
@flochtililoch Danke für die Info, habe ich meine Antwort aktualisiert – nikoshr