2012-03-20 13 views
8

मैं backbone.js का उपयोग कर मॉडल के बीच राज्य के एक मुद्दे से निपटने के लिए एक समाधान के लिए देख रहा हूँ।backbone.js के साथ एक सेव अनुरोध में अतिरिक्त, गैर मॉडल डेटा भेज रहा है?

मैं एक समय ट्रैकिंग अनुप्रयोग जहां एक उपयोगकर्ता शुरू कर सकते हैं/बंद हो जाता है नौकरियों और यह समय काम पर काम किया गया था को रिकॉर्ड करेगा। मेरे पास एक नौकरी मॉडल है जिसमें नौकरी का डेटा है और क्या यह वर्तमान में 'चालू है'।

केवल 1 काम एक समय में पर काम किया जा सकता है। तो यदि कोई उपयोगकर्ता नौकरी शुरू करता है तो वर्तमान में चल रहे नौकरी को रोका जाना चाहिए। मैं सोच रहा हूं कि ऐसा करने का सबसे अच्छा समाधान क्या है। मेरा मतलब है कि मैं बस प्रत्येक नौकरी के 'ऑन' पैरामीटर को तदनुसार टॉगल कर सकता हूं और फिर प्रत्येक पर कॉल को कॉल कर सकता हूं, जिसके परिणामस्वरूप प्रत्येक नौकरी के पूर्ण प्रतिनिधित्व के साथ प्रत्येक सर्वर के 2 अनुरोध होते हैं।

आदर्श रूप में यह करता है, तो मैं कैसे यह एक लाने का अनुरोध में अतिरिक्त डेटा भेजने के लिए संभव है करने के लिए इसी तरह बचाने के अनुरोध में अतिरिक्त डेटा पिगीबैक सकता है बहुत अच्छा होगा। मैं केवल वर्तमान में चल रहे काम का आईडी भेजने की जरूरत है और इस के बाद से वास्तव में मॉडल यह साथ भेजे जाने के लिए मॉडल, नहीं इसका हिस्सा जरूरत से संबंधित नहीं है।

क्या ऐसा करने का कोई अच्छा तरीका है? मुझे लगता है कि यदि आवश्यकता हुई मैं मौजूदा नौकरी सर्वर साइड के लिए एक संदर्भ को बनाए रखने के लिए एक रास्ता मिल सकता है: \

उत्तर

8

जब आप एक समारोह को बचाने कहते हैं, पहले पैरामीटर डेटा है कि बचाया जा रहा है का एक उद्देश्य है। केवल model.save() पर कॉल करने के बजाय, उस ऑब्जेक्ट को बनाएं जिसमें मॉडल डेटा और आपकी अतिरिक्त सामग्री हो।

... 
var data = this.model.toJSON(); 
data.extras = { myParam : someData }; 

this.model.save(data, {success: function(model, response) { 
    console.log('hooray it saved: ', model, response); 
}); 
... 
+2

इसका ध्यान रखें कि जबकि इस अतिरिक्त गैर मॉडल डेटा भेजने करता है, यह तो सेट मॉडल पर डेटा और फिर बन महत्वपूर्ण मॉडल डेटा:

अपने विधि है कि बंद आग को बचाने के अंदर

। मेरे मामले की तरह, आप यह नहीं चाहते हैं और सिर्फ मॉडल के लिए अनुरोध में अनुरोध में 1 या 2 अतिरिक्त पैरा भेजना चाहते हैं। आपको 'this.model.unset ('foo', {silent: true}) को फिर से अतिरिक्त गुण –

+0

@ryanmarc को हटाने की आवश्यकता है, हालांकि यह अतिरिक्त डेटा भेजने के लिए काम करता है लेकिन यह भेजने के लिए एक अच्छी विधि नहीं है मॉडल के साथ डेटा। –

+2

@RobinsGupta टिप्पणी करने के बजाय कि 2 साल से अधिक का जवाब सही नहीं है, क्यों एक अद्यतन उत्तर नहीं जोड़ना है? आज की तुलना में 2012 में रीढ़ की हड्डी एक अलग राज्य में थी। – ryanmarc

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