मेरे पास एक सर्वर है जो हेडर ETag के साथ काम करता है। बैकबोन पहली बार एपीआई को संदर्भित करता है: सबकुछ अच्छा है, प्रतिक्रिया प्राप्त हुई है और पार्स है। दूसरी बार: बैकबोन सर्वर ईटाग को भेजता है, प्रतिक्रिया में NotModified प्राप्त करता है। और बैकबोन इस प्रतिक्रिया को पार्स करने का प्रयास कर रहा है, जिसके परिणामस्वरूप रीसेट नामक एक संग्रह होता है।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.xhr.status === 304) इसे वापस लौटाएं। मॉडल वापसी प्रतिक्रिया.data; } ' – flochtililoch
@flochtililoch जानकारी के लिए धन्यवाद, मैंने अपना जवाब अपडेट किया – nikoshr