我有一个使用标头 ETag 的服务器。Backbone 首次引用 API:一切正常,响应接收并解析。第二次:主干向服务器发送 ETag,作为响应收到 NotModified。并且 Backbone 试图解析这个响应,从而产生一个名为 reset 的集合。
有什么办法可以重置收藏吗?
在 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'),
}
});
}