[javascript] Angular.js में मॉडल राज्य को कहां रखा जाना चाहिए


Answers

सबसे पहले, यह न भूलें कि कोणीय एक वेब आधारित ढांचा है और यदि आप पूरी तरह से किसी ऑब्जेक्ट में "अपना राज्य" रखते हैं, तो यह उपयोगकर्ता को अपने ब्राउज़र पर रीफ्रेश करने से नहीं बचाएगा। इसलिए, वेब आधारित एप्लिकेशन में मॉडल डेटा की स्थिति को कैसे बनाए रखना है इसका मतलब यह पता लगाना है कि आप इसे कैसे जारी रखने जा रहे हैं ताकि आपका कोड ब्राउज़र वातावरण में कार्य करेगा।

कोणीय आपके लिए अपने राज्य को जारी रखने के लिए वास्तव में आसान बनाता है:

  1. एक विश्वसनीय $ संसाधन के लिए एक कॉल
  2. एक यूआरएल आपके मॉडल के उदाहरण का प्रतिनिधित्व करता है

आपके सरल उदाहरण में, selectedGallery क्रियाओं जैसे selectedGallery और selectedPhoto फोटो का संग्रह यूआरएल का उपयोग करके कुछ इस प्रकार किया जा सकता है:

// List of galleries
.../gallery

// List of photos in a gallery
.../gallery/23

// A specific photo
.../gallery/23/photo/2

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

एक बार जब आप अपने आवेदन की अलग-अलग स्थिति को कायम रखने के तरीके पर अपनी रणनीति को परिभाषित कर लेते हैं, तो यह तय करना आसान होना चाहिए कि क्या आप इन .factory ऑब्जेक्ट का उपयोग करके .factory ऑब्जेक्ट का उपयोग करना चाहते हैं .factory या .factory माध्यम से एक उदाहरण।

Question

मुझे कोणीय मॉडलों के भ्रमित करने का उपयोग मिल रहा है। कोणीय दृष्टिकोण को लेता प्रतीत होता है कि एक मॉडल आपके जैसा कुछ भी हो सकता है - आईई कोणीय में एक स्पष्ट मॉडल वर्ग शामिल नहीं है और आप वेनिला जावास्क्रिप्ट ऑब्जेक्ट्स को मॉडल के रूप में उपयोग कर सकते हैं।

मैंने देखा है कि लगभग हर कोणीय उदाहरण में, मॉडल प्रभावी रूप से एक वस्तु है, या तो हाथ से बनाया गया है, या एक संसाधन के माध्यम से एक एपीआई कॉल से वापस आ गया है। चूंकि मैंने देखा है कि लगभग हर कोणीय उदाहरण सरल है, आमतौर पर नियंत्रक में $ स्कोप पर संग्रहीत मॉडल डेटा और मॉडल से संबंधित किसी भी राज्य, उदाहरण के लिए, नियंत्रक में $ स्कोप पर भी संग्रहीत किया जाता है। यह सरल ऐप्स / उदाहरणों के लिए ठीक काम करता है, लेकिन जब ऐप्स अधिक जटिल हो जाते हैं तो यह ओवरम्प्लिफिकेशन की तरह लगता है। एक नियंत्रक में संग्रहीत मॉडल स्थिति प्रासंगिक होने का जोखिम है और संदर्भ में परिवर्तन होने पर खो जाना है, उदाहरण के लिए; selectedPhoto गैलरी और selectedPhoto फोटो संग्रह करने वाला एक नियंत्रक केवल वैश्विक selectedImage छवि को स्टोर कर सकता है, प्रति गैलरी selectedPhoto नहीं है। ऐसी स्थिति में, प्रति गैलरी नियंत्रक का उपयोग इस समस्या को अस्वीकार कर सकता है, लेकिन यूआई परिप्रेक्ष्य से अपर्याप्त और शायद अनुचित और अनावश्यक लगता है।

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

हालांकि मैंने वास्तव में उन उदाहरणों में उपयोग नहीं किया है जो मैंने देखा है, लेकिन मैंने न देखा है कि मैं एक स्केलेबल विकल्प पर विचार करूंगा। कोणीय को सिंगलेट्स को लागू करके मॉडलों के रूप में सेवाओं का उपयोग करके हतोत्साहित करना प्रतीत होता है (मुझे पता है कि इसके आसपास जाने के तरीके हैं, लेकिन वे व्यापक रूप से उपयोग या अनुमोदित नहीं लगते हैं)।

तो मुझे मॉडल डेटा पर राज्य कैसे रखना चाहिए?

[संपादित करें] इस प्रश्न का दूसरा जवाब दिलचस्प है और जो मैं वर्तमान में उपयोग कर रहा हूं उसके करीब है।




Links