Tengo un servidor que funciona con un encabezado ETag. Backbone se refiere a la API por primera vez: todo está bien, la respuesta recibida y el análisis. Segunda vez: la red troncal envía al servidor ETag, en respuesta recibe NotModified. Y Backbone tratando de analizar esta respuesta, lo que resulta en una colección llamada reinicio.Backbone.js parse respuesta no modificada
¿Hay alguna forma de restablecer la colección?
El método de agregar la opción para agregar en el método de búsqueda no funcionará. Ya que necesito actualizar completamente la colección, si llegué a la respuesta del servidor.
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 documentación evolucionó, el segundo parámetro está [ahora documentado] (http://backbonejs.org/#Collection-parse), y es el objeto 'options' que contendrá el' xhr'. La primera solución debería cambiarse a 'analizar: función (respuesta, opciones) { if (opciones.xhr.status === 304) devolver this.models return response.data; } ' – flochtililoch
@flochtililoch Gracias por la información, actualicé mi respuesta – nikoshr