2011-07-19 12 views
7

पर बैकबोन मॉडल और संग्रह सहेजना मुझे बैकबोन.मोडेल या बैकबोन सहेजने में समस्या आ रही है। स्थानीय ऑब्जेक्ट्स में चयन ऑब्जेक्ट्स। समस्या यह है कि जब यह बचाता है, केवल गुण सहेजे जाते हैं और मुझे वह नहीं चाहिए। मैं वास्तव में रीढ़ की हड्डी-स्थानीय स्टोरेज का उपयोग कर रहा हूं जो उनके नमूना TODO डेमो में प्रदान किया गया है।जेएसओएन स्ट्रिंग

यह उनके कार्य को बचाने

save: function() {   
    localStorage.setItem(this.name, JSON.stringify(this.data)); 
} 

जब मैं देखो क्या JSON.stringify (this.data) रिटर्न, मैं सेट हो जाता है केवल मॉडल या संग्रह के गुणों को देखने के लिए है। क्या यह निर्दिष्ट करने का कोई तरीका है कि मैं पूरे राज्य को सहेजना चाहता हूं मॉडल और संग्रह केवल गुणों में नहीं है?

उत्तर

12

उस मॉडल को वापस करने के लिए मॉडल.toJSON या Collection.toJSON को ओवरराइड करें जिसे आप क्रमबद्ध करना चाहते हैं।

toJSON : function() { 
    return _.clone(this.attributes); 
} 

संग्रह का toJSON मॉडल के toJSON का इस्तेमाल करता है:

डिफ़ॉल्ट Model.toJSON सिर्फ गुण देता है

toJSON : function() { 
    return this.map(function(model){ return model.toJSON(); }); 
} 
+0

लेकिन मैं वास्तव में JSON.stringify फोन कर रहा हूँ नहीं model.toJSON() तो क्या पूरे मॉडल सेट को स्ट्रिंगिफाइड नहीं किया जाना चाहिए और न केवल गुण? जब तक JSON.stringify मॉडल.toJSON() को कॉल नहीं करता है? – dchhetri

+2

जिस तरह से JSON.stringify काम करता है। https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify "अगर किसी ऑब्जेक्ट को स्ट्रिंग किया जा रहा है, तो उस संपत्ति को जेएसओएन नाम दिया गया है जिसका मूल्य एक फ़ंक्शन है, तो toJSON विधि JSON स्ट्रिंगफिकेशन व्यवहार को अनुकूलित करती है: इसके बजाय ऑब्जेक्ट को क्रमबद्ध किया जा रहा है, जिसे कॉल करने के लिए toJSON विधि द्वारा लौटाया गया मान क्रमबद्ध किया जाएगा। " –

+0

ओह मैं देखता हूँ। मै उसे करने की एक कोशिश तो करूंगा। – dchhetri

संबंधित मुद्दे