@mu_is_too_short टिप्पणी की, रीढ़-संबंधपरक तरह
कुछ आप में देख में रुचि रखते हैं हो सकता है। Backbone-relational के साथ आपके मॉडल और submodel संग्रह स्वचालित रूप से बनाए जाते हैं और ईवेंट को माता-पिता-बाल संबंधों में प्रबंधित किया जा सकता है।
मैं आपको कुछ नमूना कोड दूंगा ताकि आप इसके लिए स्वाद प्राप्त कर सकें। आपके उदाहरण कोड का हिस्सा ऐसा कुछ दिख सकता है।
उपयोगकर्ता कई घटनाक्रम है:
User = Backbone.RelationalModel.extend({
relations: [
type: Backbone.HasMany, // Type of relationship
key: 'events', // How we reference the sub-models in collection
relatedModel: 'Event', // The sub-model type
collectionType: 'EventCollection', // The sub-model collection
reverseRelation: {
key: 'belongsToUser' // Key we use to refer to the parent
}
],
// Other Backbone.Model properties and functions
});
जब आप एक रीढ़-संबंधपरक मॉडल बनाने के लिए, यह स्वचालित रूप से 'कुंजी' है कि आप को नामित के नाम पर आप के लिए submodels का एक संग्रह बनाता है। तो आपके पास प्रत्येक उपयोगकर्ता के पास संबंधित घटनाओं का स्वयं का संग्रह होगा, जो कि tidy-ed up है।
मूल रूप से, जब आप उपयोगकर्ता को बनाते या प्राप्त करते हैं, तो आप इसे संबंधित मॉडलों के संदर्भ देते हैं। तो उदाहरण के लिए, आपके उपयोगकर्ता आईडी = 1 को ईवेंट 5, 7, और 11 की आवश्यकता हो सकती है (मैं केवल आईडी का उपयोग कर रहा हूं)। जब तक इन संदर्भों को सरणी रूप में परिभाषित किया जाता है तब तक आप उन्हें रिलेशनल के fetchRelated विधियों का उपयोग करके आलसी लोड कर सकते हैं।
myUser = new User();
myUser.set({
name: 'RayMysterio',
age: '26',
events: [5, 7, 11] // Or this might just come with the User object from your server
});
myUser.fetchRelated('events');
// This will go fetch the related events for this user model from the URL you designate.
myUser.get('events');
// The collection of events are treated like an attribute of the User model.
myUser.get('events').find(function(eventModel){
return // some find condition - or whatever you want to do on that collection
});
आप उप-मॉडल के लिए कुछ श्रोताओं बाध्य करने के लिए चाहते हो सकता है।
myUser.bind('add:events', function(model, collection) {
// Whatever code you want to happen when new models are added to the user events coll
});
आदि आदि
यह एक करने के लिए एक, कई लोगों के लिए एक है, और उलटा संबंधों का निर्माण करने का एक अच्छा तरीका है। यह बहुत महत्वपूर्ण है। जब आप मॉडल के बीच संबंध परिभाषित करते हैं और आप एक मॉडल बनाते हैं।
उदा। आप उपयोगकर्ता मॉडल का एक नया उदाहरण बनाते हैं।
बैकबोन-रिलेशनल स्वचालित रूप से व्यस्त लिंक बनाता है (इवेंट मॉडल में रिवर्स रिलेशन कुंजी 'वर्क्स टुउसर' (या जो भी आप इसे नाम देते हैं) द्वारा परिभाषित एक विशेषता है। यह मॉडल/उप- मॉडल पदानुक्रम।
अपने रिलेशनल आवश्यकताओं के आधार पर यह एक अच्छा फिट की तरह लगता है।
आप कई लोगों के लिए कई चाहते हैं, तो यह कर (मध्यवर्ती मॉडल का उपयोग) के एक राउंड के बारे में जिस तरह से है, लेकिन मैं मिल गया है यह बहुत ही भद्दा होने के लिए है और मैं इससे बचता हूं। पॉल-यूथोल कुछ समय के लिए बैकबोन-रिलेशनल अपडेट कर रहा है और नई सुविधाओं को शामिल किया जा रहा है। सीखने की अवस्था पहले मेरे लिए थोड़ा मुश्किल थी लेकिन एक बार शुरू करने के बाद इसका उपयोग करने के लिए यह शक्तिशाली काम है।
नोट: बस जोर देने के लिए, मोसेलमैन ने Requ.js की सिफारिश की और मैं भी इसके साथ दृढ़ता से सहमत हूं। इसने मेरे कोड को और अधिक प्रबंधनीय बना दिया है। आप इसे एएमडी अनुपालन करने के लिए बैकबोन-रिलेशनल कोड को टिंकर (लपेटें) कर सकते हैं और यह आवश्यकता के साथ बेकार ढंग से काम करता है।
अद्यतन: रीढ़ की हड्डी-संबंधपरक अब 1 अप्रैल, 2014 को रिलीज 0.8.8 के रूप में require.js का समर्थन करता है - धन्यवाद केनेथ
एक ईवेंट मॉडल के माध्यम से उपयोगकर्ता के लिए घटनाओं से संबंधित करना संभव है? 'myUser.set ('ईवेंट', [myEvent1, myEvent2, myEvent3]); ऐसा कुछ? या क्या आपको संबंधित मॉडल आईडी के माध्यम से संबंधों का संदर्भ देना है? –
@orangewarp रीढ़ की हड्डी-रिलेशनल अब 1 अप्रैल, 2014 को रिलीज 0.8.8 के रूप में require.js का समर्थन करता है। Http://backbonerelational.org/#change-log देखें – Kenneth