2013-05-22 8 views
5

में ईवेंट का सही तरीके से उपयोग कैसे करें मैं तीन-तरफा चयनकर्ता बना रहा हूं: कंपनियां, विभाग और उपयोगकर्ता।बैकबोन

enter image description here

मैं अपने बैकबोन अनुप्रयोग में इस संरचना करने के लिए सबसे अच्छा तरीका यह पता लगाने की कोशिश कर रहा हूँ। मेरे पास वर्तमान समस्या है।

कहें कि उपयोगकर्ता ने एक कंपनी का चयन किया है। फिर, विभागों और उपयोगकर्ता संग्रह आबादी वाले हो जाएगा और दृश्य को अपडेट होगा:

enter image description here

उपयोगकर्ता फिर सूची है, जो आगे उपयोगकर्ता का चयन करें और परिशोधित कर देंगे से एक विभाग का चयन कर सकते हैं। यह मैं अच्छी तरह से काम कर रहा है।

या, उपयोगकर्ता सीधे उपयोगकर्ता सूची में जा सकते हैं और उपयोगकर्ता को ढूंढ सकते हैं (बिना किसी विभाग को निर्दिष्ट किए बिना)। इस मामले में, दोनों विभागों और उपयोगकर्ताओं के लिए दृश्य को अद्यतन करने की आवश्यकता है:

  1. विभाग को उपयोगकर्ता के विभाग पर चुना जाना चाहिए।
  2. उपयोगकर्ताओं को चयनित उपयोगकर्ता के सभी उपयोगकर्ता के बजाय चयनित उपयोगकर्ता के विभाग में सभी उपयोगकर्ताओं को परिशोधित करना चाहिए।

मैं ऐसा करने का सबसे अच्छा तरीका से संघर्ष कर रहा हूं। अब तक, मेरे departments और users संग्रहों में selected संपत्ति है, इसलिए मैं राज्य को बनाए रख रहा हूं। वर्तमान में मैं

  • की तरह कुछ उपयोगकर्ता एक विभाग, विभाग दृश्य
    1. का चयन करता है सेट चयनित विभाग सीधे कर रहा हूँ departments संग्रह
    2. पर एक घटना
    3. उपयोगकर्ताओं संग्रह सुनता ट्रिगर घटना, किसी भी चयनित उपयोगकर्ता को साफ़ करता है, और एक और घटना
    4. उपयोगकर्ताओं को ईवेंट सुनता है, और फिर से प्रस्तुत करता है। चूंकि यह विभागों संग्रह के बारे में जानता है, यह जानता है एक विभाग चयनित किया गया है और यह है कि यह विभाग के लिए नीचे उपयोगकर्ताओं को परिष्कृत करना चाहिए

मैं यह कर, क्योंकि अगर मैं दृष्टिकोण था केवल घटना (बिना गति प्रदान विभागों को पहले चयनित संपत्ति सेट करना), मेरे पास दौड़ की स्थिति होगी: दोनों विभाग और उपयोगकर्ता संग्रह ईवेंट का जवाब देंगे, और समय के आधार पर उपयोगकर्ताओं को उचित रूप से परिष्कृत नहीं किया जा सकता है।

दूसरा टुकड़ा:

  • उपयोगकर्ता एक उपयोगकर्ता का चयन करता है (एक विभाग निर्दिष्ट किए बिना), उपयोगकर्ता दृश्य
    1. users संग्रह
    2. सेट चयनित पर सीधे चयनित उपयोगकर्ता सेट करता है विभाग सीधे departments संग्रह (जिसे यह जानता है)
    3. एक ईवेंट ट्रिगर्स

और यह वह जगह है जहां मैं अटक गया हूं। विभाग संग्रह को वास्तव में कुछ भी करने की ज़रूरत नहीं है, क्योंकि इसकी चयनित संपत्ति पहले से ही सही है; वास्तव में, इसके विचार को फिर से प्रस्तुत करने की जरूरत है। और उपयोगकर्ताओं के विचार भी करता है।

लेकिन यह सब कुछ नहीं है, क्योंकि कई अन्य चीजें हो सकती हैं। मुझे लगता है कि यह नियंत्रण से बाहर हो रहा है।

  • इसकी संरचना करने के लिए सबसे अच्छा क्या है?
  • क्या मैं घटनाओं का सही ढंग से उपयोग कर रहा हूं?
  • आप ऐसे विचारों से कैसे निपटते हैं जिन्हें अन्य विचारों और अन्य संग्रहों को बदलने के बारे में सुनने की आवश्यकता है?

अद्यतन: मैं सिर्फ आवेदन राज्य को बचाने के लिए मार्गों उपयोग करना चाहिए? यह चीजों को सरल बना सकता है ...

अद्यतन 2:This question मेरे लिए सहायक रहा है। राज्य का प्रबंधन करने के लिए एक अलग मॉडल होने के लिए निश्चित रूप से जाने का तरीका लगता है।

अद्यतन 3: राज्य को स्टोर करने के लिए एक अलग मॉडल होने के बाद jQuery deferreds का उपयोग अद्भुत है। गंभीरता से। यह मुझे पूरा करता है।

उत्तर

2

मुझे राज्य का ट्रैक रखने के लिए मॉडल का उपयोग करना उपयोगी लगता है। इस तरह आप उस मॉडल को विभिन्न विचारों के आस-पास पास कर सकते हैं और एक-दूसरे को सीधे संदर्भित करने वाले विचार नहीं हैं।

आप राज्य संक्रमणों को प्रबंधित करने के लिए राज्य मॉडल पर अंतर्निहित और कस्टम ईवेंट का उपयोग कर सकते हैं।

आपके मामले में संग्रहों को selected स्टोर करने की आवश्यकता नहीं होगी। इसके बजाय selectedUser और selectedDepartment राज्य मॉडल के गुण हो सकते हैं। फिर आप अपने मॉडल में तर्क प्राप्त कर सकते हैं जो चयनित घटनाओं के आधार पर कस्टम ईवेंट ('अपडेट: उपयोगकर्ता: व्यू' या 'अपडेट: डिपार्टमेंट्स: व्यू') ट्रिगर करता है।

मुझे उम्मीद है कि यह समझ में आता है।

+0

मुझे यह पसंद है - मैं इसे एक शॉट दूंगा और आपको वापस ले जाऊंगा! –

+0

क्या आप दृश्य-> राज्य और राज्य-> संग्रह और पीछे से संवाद करने के लिए ईवेंट का उपयोग करते हैं? या आप सबकुछ के लिए राज्य संदर्भ देते हैं और केवल कार्यों को सीधे कॉल करते हैं? या कुछ संयोजन? –

+0

लगता है जैसे विचारों के लिए राज्य के प्रत्यक्ष संदर्भ होना चाहिए ताकि वे प्रतिपादन करते समय अपनी गुणों का उपयोग कर सकें। इस बात से सहमत? –