2011-06-28 12 views
11

मैं knockoutjs (शुद्ध जेएस/एचटीएमएल) का उपयोग करने के लिए एक मौजूदा एएसपी एमवीसी ऐप बंद करने की कोशिश कर रहा हूं क्योंकि अब मुझे वास्तव में एएसपी एमवीसी के भीतर किसी भी कार्यक्षमता की आवश्यकता नहीं है। हालांकि एक समस्या जो मैं कर सकता हूं वह है जिस तरह से मैं अपने कुछ पेजों को संभालने का तरीका हूं।नॉकआउटजेएस - मुख्य दृश्य के भीतर एकाधिक आंशिक विचार?

मेरे पास एक पृष्ठ है जिसमें लगभग 12 आंशिक विचार हैं, प्रत्येक आंशिक का अपना मॉडल है।

  • ग्राहक विवरण
  • ग्राहक: अब नॉकआउट जे एस के साथ ऐसा लगता है जैसे आप केवल वास्तव में 1 viewmodel/प्रति पृष्ठ देखने के लिए, तथापि पेज मेरे पास जानकारी की एक बड़ी मात्रा में होता है होना चाहिए, वर्गों के लिए समान होगा पता
  • ग्राहक हाल आदेश
  • ग्राहक कार्ड
  • ग्राहक फंड
  • ...

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

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

तो क्या मुझे इस दृश्य के लिए सिर्फ एक बड़ा मॉडल बनाना चाहिए और बस इसके साथ सौदा करना चाहिए? या क्या विचार एक-दूसरे से बात करने का कोई तरीका है?

+0

क्या किसी के पास नॉकआउट के लिए सामान्य रूप से कोई सभ्य ट्यूटोरियल है क्योंकि मुझे दस्तावेज़ को थोड़ा सा छोटा पाया गया था, और केवल कुछ छोटे उदाहरण थे। डेमो ऐप की तरह कुछ भी महत्वपूर्ण नहीं है जिसने इसे कई पृष्ठों आदि पर काम दिखाया ... – somemvcperson

+0

डेमो ऐप बिट में कुछ संदर्भ जोड़ने के लिए, मैंने पाया कि उनकी साइट के कुछ सभ्य उदाहरण थे लेकिन वे केवल एक मॉडल मॉडल और व्यू का उपयोग करना चाहते थे, कभी मॉडल नहीं, तो यह अन्य मॉडल क्या है? अन्यथा यह सिर्फ VVM ... – somemvcperson

उत्तर

3

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

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

तो मूल रूप से आप मुख्य पृष्ठ में अपने मुख्य ग्राहक सरणी वस्तु को पॉप्युलेट करते हैं और फिर विवरण, पता आदि को पॉप्युलेट करने के लिए फ़ंक्शन कॉल करते हैं जिन्हें क्रमशः प्रत्येक आंशिक दृश्य में परिभाषित किया जाता है।

+1

प्रतिक्रिया के लिए धन्यवाद, एक बात जो अभी भी मुझे एक बड़ी मॉडल शैली के बारे में चिंतित करती है वह यह है कि बड़े मॉडल (यानी पता, कार्ड) के भीतर प्रत्येक मॉडल स्वतंत्र रूप से सहेजा जाता है। हालांकि मेरे शुरुआती दिखने से ऐसा लगता है कि आप एक ही समय में पूरे मॉडल को जारी रखते हैं ... क्या मुझे ऐसा करने के लिए कुछ भी लिखना है? या यह saveCard (अनुक्रमणिका) saveAddress (अनुक्रमणिका) को उन तरीकों के रूप में बस इतना आसान है जो सर्वर को भेजते हैं? – somemvcperson

+0

वास्तव में नहीं। यदि आपके पास एक बड़े मॉडल के तहत मॉडल हैं तो आपको केवल यह सुनिश्चित करना होगा कि आप उन्हें आंशिक दृश्यों के अंदर सही तरीके से संदर्भित करें। 'Add Card'। मैंने वास्तव में परीक्षण नहीं किया है कि यद्यपि मैं सब कुछ एक ही दृश्य मॉडल में डाल दिया। मॉडल के अंदर कोई मॉडल नहीं; बिल्कुल एक अच्छा समाधान नहीं है। – neebz

+2

बीटीडब्ल्यू, मुझे अभी एहसास हुआ कि आप एक div के अंदर अपने आंशिक विचारों को encapsulating करके और फिर ko.apply बाइंडिंग (partialViewModel, "div की आईडी") को कॉल करके कई बाइंडिंग लागू कर सकते हैं। दूसरा पैरामीटर बताता है कि बाइंडिंग को कहां लागू करना है। – neebz

3

मैं एक राक्षस दृश्य मॉडल के खिलाफ सावधानी बरतता हूं क्योंकि यह एक कसौटी युग्मन बनाता है कि आप जटिल अनुप्रयोगों से बचना चाहते हैं।

ko.subscribable के शीर्ष पर एक पब/सब सिस्टम बनाने का एक बेहतर समाधान है। दृश्य मॉडलों के बीच संचार को विभिन्न घटनाओं के लिए सदस्यता प्रबंधित करके सुविधा प्रदान की जाती है। यह थोड़ा और काम आगे है, लेकिन यह सड़क के नीचे लाभांश का भुगतान करेगा।

Here एक ब्लॉग पोस्ट है जो इस विषय पर विस्तार करता है। मैं अत्यधिक इस ब्लॉग की सिफारिश करता हूं। नॉकआउट-विशिष्ट चुनौतियों और रणनीतियों के लिए यह एक महान संसाधन है।

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