我有一個與標頭ETag一起工作的服務器。骨幹首次提到API:一切都很好,收到的響應和解析。第二次:骨幹發送到服務器ETag,作爲響應收到NotModified。而Backbone試圖解析這個響應,導致一個名爲reset的集合。Backbone.js解析未修改的響應
有什麼辦法可以重置集合嗎?
添加選項以添加fetch方法的方法將不起作用。因爲我需要徹底刷新收集,如果我來到服務器的響應。
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'),
}
});
}
文檔發展了,第二個參數是[現在記錄](http://backbonejs.org/#Collection-parse),並且是包含'xhr'的'options'對象。如果(options.xhr.status === 304) 返回this.models return result.data;如果(options.xhr.status === 304) 返回response.data,則需要將第一個解決方案更改爲'parse:function(response,options){ }' – flochtililoch
@flochtililoch感謝您的信息,我更新了我的答案 – nikoshr