2011-10-03 13 views
9

Backbone.js का उपयोग करना मॉडल के सभी नेस्टेड मॉडल और संग्रहों को सभी तरह से सुनने के लिए सबसे अच्छा पैटर्न क्या है?मॉडल रखने के लिए सर्वोत्तम पैटर्न नेस्टेड मॉडल और संग्रह सुनते हैं?

क्या मुझे गुणों में नेस्टेड मॉडल/संग्रह रखना चाहिए? क्या मुझे अभिभावकीय संबंध बनाना चाहिए और घटनाओं को मैन्युअल रूप से ट्रिगर करना चाहिए?

उत्तर

14

अधिकांश चीज़ें Backbone.js के साथ होता है, तो आप इस के लिए एक "सही" जवाब नहीं मिल जाएगा, लेकिन मैं साझा करने के तरीके मैं यह कर। दोनों मॉडल और दृश्यों के साथ, मैं आम तौर पर इन दिशा-निर्देशों का पालन करें:

  • दृश्य और मॉडल घटक है कि उनके लिए "जिम्मेदार" द्वारा instantiated किया जाना चाहिए। स्पष्ट माता-पिता/बाल संबंधों के साथ मॉडल या विचारों के लिए, माता-पिता मॉडल को तत्काल initialize() विधि में तत्काल होना चाहिए।

  • माता इन्स्टेन्शियशन के समय बच्चे की घटनाओं के लिए बाध्य करना चाहिए।

  • माता-पिता को बच्चों के "जागरूक" होना चाहिए, और यदि आवश्यक हो तो बाल विधियों को कॉल कर सकते हैं - मैं आमतौर पर एक बच्चे की घटना को ट्रिगर करने के लिए इस विधि का उपयोग करता हूं, क्योंकि यह अधिक स्पष्ट है। मैं बच्चों को अपने माता-पिता से स्वतंत्र रखने की कोशिश करता हूं, घटनाओं के माध्यम से ऊपर संचार करता हूं। तो हाँ, गहरा घोंसला मॉडल घटना श्रृंखलाओं के माध्यम से संवाद करेगा।

  • मैं कभी कभी .set() बच्चों बैकबोन विशेषताओं के रूप में है, लेकिन आम तौर पर सिर्फ सादा जावास्क्रिप्ट विशेषताओं का उपयोग (जैसे this.child)। ये संदर्भ पर निर्भर करता है। बैकबोन विशेषता का उपयोग change घटनाओं को प्रदान करता है, इसलिए यदि आपको यह देखने की आवश्यकता है कि कोई बच्चा बदलता है या नहीं, तो उनका उपयोग करें। बैकबोन विशेषताएँ आपको तत्काल समय पर सेट करने की क्षमता भी देती हैं, उदा। var myModel = new Model({ other: otherModel }) - लेकिन क्योंकि माता-पिता आमतौर पर अपने बच्चों का दृष्टांत, यह वास्तव में उस मामले में लागू नहीं होता है, और मैं आमतौर पर गैर श्रेणीबद्ध मॉडल मॉडल संबंधों के लिए उस पैटर्न का उपयोग करें। ज्यादातर मामलों में, मैंने बच्चों को सादा जावास्क्रिप्ट विशेषताओं के रूप में सेट किया है।

+0

अच्छा जवाब:

सिर्फ Backbone.Relational की तरह कुछ है जो आप के लिए यह सब सामान संभालती प्रयोग का विचार बाहर टॉस करना चाहता था। की सराहना करते है कि वहाँ एक से अधिक विहित सबसे अच्छा तरीका –

3

मुझे वास्तव में @nrabinowitz 'उत्तर पसंद है। उन्होंने सभी सही विवरण शामिल किए। https://github.com/PaulUithol/Backbone-relational

+0

मैं किसी भी विचार यह रीढ़-rel प्रश्न के मुद्दों के लिए समान होने के समाप्त हो गया? मुझे लगता है कि मैं स्वचालित रूप से बनाए गए मॉडल से अलग व्यवहार की उम्मीद कर रहा हूं? http://stackoverflow.com/questions/7685791/backbone-relational-events-not-firing – boom

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