2013-06-13 9 views
5

लाने के बाद संग्रह में प्रकट नहीं होता है। मैं रीढ़ की हड्डी स्थानीय भंडारण का उपयोग कर रहा हूं और कुछ अजीब व्यवहार का अनुभव कर रहा हूं।नया सहेजा गया बैकबोन मॉडल

MyModel = Backbone.Model.extend({ 
     localStorage: new LocalStore('example-myModels') 
     //note: LocalStore = Backbone.LocalStore -> https://github.com/jeromegn/Backbone.localStorage 
}); 

MyCollection = Backbone.Collection.extend({ 
     model : MyModel, 
     localStorage: new LocalStore('example-myModels') 
}); 

var myCollection = new MyCollection(); 
myCollection.fetch(...); 

इस संग्रह में तो उपयोगकर्ता के लिए एक सूची के रूप में प्रदर्शित किया जाता है:

मैं एक मॉडल और संग्रह है कि, परिभाषित किया गया है instantiated, और लाई गई।

var newModel = new MyModel(); 
newModel.save(newModelAttributes, { 
    success: function(newlySavedModel) { 
     myCollection.add(newlySavedModel); 
    } 
); 

इस बिंदु myCollection मैं सफलतापूर्वक मेरी localStorage डेटाबेस में बनाया रिकॉर्ड देख सकते हैं नए जोड़े गए मॉडल है और: उपयोगकर्ता के लिए संग्रह जो अंततः इस कोड में जो परिणाम के लिए एक आइटम "जोड़ें" में सक्षम है

पूर्व बचाने LocalStorage:

enter image description here

के बाद बचाने LocalStorage:

enter image description here

उपयोगकर्ता के बाद अगला चरण कहते हैं रिकॉर्ड सूची है, उस क्षण संग्रह फिर से प्राप्त किया गया है के लिए वापस जाने के लिए है:

myCollection.fetch(); 

अब myCollection नहीं रह गया है नया रिकार्ड में शामिल है। कोई फर्क नहीं पड़ता कि मैं कितनी बार लाता हूं, नया रिकॉर्ड पुनर्प्राप्त नहीं किया जाएगा - भले ही मैं इसे अपने स्थानीय स्टोरेज डेटाबेस में देख सकूं। मैंने संग्रह का एक नया उदाहरण बनाने और इसे लाने की भी कोशिश की है, लेकिन यह वही परिणाम उत्पन्न करता है। यदि मैं ब्राउज़र को फिर से लोड करता हूं, तो नया रिकॉर्ड अपेक्षित के रूप में दिखाई देता है। किसी को भी पता है कि क्या हो रहा है? मैं महसूस कर रही मैं कुछ यहाँ मौलिक याद आ रही है ...

एक दौड़ उदाहरण है कि इस मुद्दे को reproduces यहाँ उपलब्ध है मिलती है: http://jsbin.com/iyorax/2/edit (सुनिश्चित करें कि कंसोल दिख रहा है बनाने के लिए और "जे एस के साथ भागो" पर क्लिक करें)

धन्यवाद अग्रिम!

+1

यदि आप 'myCollection.fetch ({reset: true}) कहते हैं तो नया रिकॉर्ड मौजूद है; '? –

+1

"रीसेट: सच" के साथ कोई भाग्य नहीं :( – moliveira

+0

क्या यह जेएस फीडल में होता है? – prototype

उत्तर

4

आपके मॉडल और आपके संग्रह को स्थानीय स्टोर के उसी उदाहरण के संदर्भ में साझा करने की आवश्यकता है, जबकि अभी आप दो अलग-अलग ऑब्जेक्ट्स बना रहे हैं। इसे ठीक करने के लिए, मॉडल या संग्रह के बाहर लोकलस्टोर ऑब्जेक्ट बनाएं, और अपने मॉडल और संग्रह के रचनाकारों में इसके संदर्भ में पास करें।

+0

उसने ऐसा किया। धन्यवाद! – moliveira

+2

तो सबकुछ अब काम कर रहा है लेकिन मैं थोड़ा सह हूं स्थानीय स्टोरेज कैसे काम करता है इसके बारे में nfused। यहां तक ​​कि यदि मैं मॉडल को सहेजने के बाद * नया * संग्रह चालू करता हूं, तो नया मॉडल मेरे नए संग्रह (http://jsbin.com/iyorax/11/edit) में प्रकट नहीं होता है। हालांकि यह पृष्ठ रीलोड पर दिखाई देता है। मैं समझता हूं कि मेरे मॉडल में बैकबोन.लोकलस्टॉरेज के कई उदाहरण होंगे लेकिन मेरी उम्मीद यह है कि उन्हें एक सामान्य निरंतर स्टोर द्वारा समर्थित किया जाता है। मैं क्या खो रहा हूँ? – moliveira

1

मेरे पास बैकबोन.लोकलस्टॉरेज के साथ काम करने वाला एक एप्लीकेशन है और मेरे लिए क्या काम करता है, मैं पहले संग्रह में मॉडल जोड़ता हूं और फिर मैं मॉडल को सहेजता हूं। इस तरह।

var newModel = new MyModel(); 
myCollection.add(newModel) 
newModel.save(); 

इम नहीं 100% यकीन है कि, लेकिन मेरे तर्क है कि, अपने मॉडल सहेजा जाता है, लेकिन अपने संग्रह नहीं है, और शायद एक सूचकांक अद्यतन नहीं किया जा रहा है और समय है कि आप कहते हैं कि आप हो रही है लाने अपरिवर्तित संग्रह।

उम्मीद है कि मदद करता है।

+0

धन्यवाद! यह वास्तव में आशाजनक लग रहा था! दुर्भाग्यवश, मैंने अभी कोशिश की और कोई किस्मत नहीं। व्यवहार बिल्कुल वैसा ही है जहां संग्रह में तत्वों की सही संख्या होती है(), लेकिन जब मैं रीफ्रैच करता हूं तो मैं हार जाता हूं जोड़ा तत्व। fetch के बारे में कुछ नहीं है जब तक कि पृष्ठ पुनः लोड नहीं हो जाता है, स्थानीय स्टोरेज में किए गए परिवर्तनों को नहीं उठा रहा है। – moliveira

0

एकमात्र कारण मैं कारण के बारे में सोच सकता है, जो करने के लिए मॉडल संग्रह में मौजूद नहीं है की वजह से है डुप्लिकेट आईडी

मैं एक IdAttribute मॉडल पर परिभाषित नहीं दिख रहा। कभी-कभी यह समस्या हो सकती है।

+0

धन्यवाद! मैंने ऊपर दिए गए प्रश्न पर मेरे लोकल स्टोरेज के कुछ स्क्रीनशॉट जोड़े हैं। मुझे आईडी के साथ कुछ भी गलत नहीं दिख रहा है लेकिन कृपया मुझे बताएं अगर कुछ दिखता है। – moliveira

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