Ho un server che funziona con un'intestazione ETag. Backbone si riferisce all'API per la prima volta: tutto è buono, la risposta ricevuta e analizzata. Seconda volta: il backbone invia al server ETag, in risposta riceve NotModified. E Backbone tenta di analizzare questa risposta, risultando in una raccolta chiamata reset.Backbone.js analizza la risposta non modificata
C'è un modo per aggirare la raccolta?
Il metodo di aggiunta dell'opzione da aggiungere nel metodo di recupero non funzionerà. Dal momento che ho bisogno di aggiornare completamente la raccolta, se sono arrivato alla risposta del server.
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'),
}
});
}
La documentazione si è evoluta, il secondo parametro è [ora documentato] (http://backbonejs.org/#Collection-parse) ed è l'oggetto 'options' che conterrà' xhr'. La prima soluzione dovrebbe essere modificata in 'parse: function (response, options) { if (options.xhr.status === 304) return this.models return response.data; } ' – flochtililoch
@flochtililoch Grazie per le informazioni, ho aggiornato la mia risposta – nikoshr