Tôi có một máy chủ hoạt động với thẻ ETAG tiêu đề. Xương sống đề cập đến API lần đầu tiên: mọi thứ đều tốt, phản hồi nhận được và phân tích cú pháp. Thứ hai thời gian: xương sống gửi đến máy chủ ETag, trong phản ứng nhận NotModified. Và Backbone cố gắng phân tích cú pháp phản hồi này, dẫn đến một bộ sưu tập có tên là reset.Phản hồi không được sửa đổi phân tích cú pháp Backbone.js
Có cách nào xung quanh nó đặt lại bộ sưu tập không?
Phương pháp thêm tùy chọn thêm vào phương thức tìm nạp sẽ không hoạt động. Vì tôi cần hoàn toàn làm mới bộ sưu tập, nếu tôi đến phản hồi của máy chủ.
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'),
}
});
}
Tài liệu được phát triển, tham số thứ hai là [nay được ghi lại] (http://backbonejs.org/#Collection-parse) và là đối tượng 'tùy chọn' chứa' xhr'. Giải pháp đầu tiên sẽ cần phải được thay đổi thành 'phân tích cú pháp: chức năng (phản hồi, tùy chọn) { nếu (tùy chọn.xhr.status === 304) trả lại.mô hình này return response.data; } ' – flochtililoch
@flochtililoch Cảm ơn thông tin, tôi đã cập nhật câu trả lời của mình – nikoshr