2012-07-11 22 views
14

मेरे पास कुछ कोड है जहां मैं नोटकोलेक्शन व्यू को नोटकोलेक्शन में एक नया नोट जोड़ने के लिए चाहता हूं। यह NoteCollectionView में एक समारोह newNote से शुरू हो रहा है:बैकबोन: संग्रह दृश्य से संग्रह में कोई मॉडल जोड़ना?

newNote: function(data) { 
    var note = new Note(data); 
    this.collection.add(note); 
}, 

मैं अभी भी रीढ़ की हड्डी के लिए बहुत नया हूँ, और मुझे यकीन है कि इस सर्वर के साथ सिंक करता है बनाना चाहते हैं। मेरी चिंताएं हैं:

1) बस इस नोट को संग्रह से सर्वर से एक सेव() को ट्रिगर करेगा, और मॉडल को उस आईडी के साथ अद्यतन करेगा जो सर्वर देता है? या,

2) यदि सर्वर मेरे मॉडल को अपडेट नहीं करता है और मुझे एक वास्तविक आईडी देता है, तो मैं मॉडल को note.save() के साथ कैसे सहेज सकता हूं और सर्वर से आईडी वापस ले सकता हूं?

उत्तर

33

अपने पहले प्रश्न को संबोधित करने के लिए, नहीं, .add सर्वर पर किसी भी तरह का कॉल ट्रिगर नहीं करेगा; यह केवल एक संग्रह में एक मॉडल जोड़ देगा।

हालांकि, आपके पास कुछ विकल्प हैं। एक, नया नोट मॉडल बनाने के डेटाबेस में सहेजें, और उसके बाद संग्रह में जोड़ने के लिए होगा:

newNote: function(data) { 
    var note = new Note(data); 
    note.save(); 
    this.collection.add(note); 
} 

दूसरा विकल्प बस Backbone's collection.create method उपयोग करने के लिए है। यह विशेषताओं का एक हैश दें और यह

  1. डेटाबेस के लिए मॉडल
  2. बनाएं होगा यह सहेजें
  3. यह, एक ही बार में

सभी संग्रह में जोड़े तो जैसे:

newNote: function(data) { 
    return this.collection.create(data); 
} 

collection.create ऊपर दिए गए मेरे रिटर्न स्टेटमेंट द्वारा दिखाए गए नए बनाए गए मॉडल को भी लौटाता है।

+0

धन्यवाद, महान जवाब! तो मेरे सर्वलेट में कौन से पैरामीटर लेना चाहिए, और प्रतिक्रिया में जेएसओएन को नया मॉडल लिखना चाहिए? – theeggman85

+1

'collection.create'' model.save' का उपयोग करता है, इसलिए मान लें कि आपके मॉडल डेटाबेस में सही ढंग से सहेज रहे हैं, और कोई भी बदलाव की आवश्यकता नहीं है। आम तौर पर, मैं बैकबोन मॉडल को सहेजने और सेट करने के बाद जेएसओएन के रूप में मॉडल के गुणों को वापस लौटता हूं; यह मुझे सहेजने के दौरान कुछ विशेषताओं को बदलने के लिए लचीलापन देता है, और बैकबोन मॉडल का डेटा सहेजने के बाद इन परिवर्तनों को प्रतिबिंबित करेगा – jackwanders

+0

निर्माण बहुत अच्छा काम करेगा - क्या कोई विकल्प है जिसे हम इसे डीबी से बचाने से रोकने के लिए पास कर सकते हैं? –

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