[Javascript] कहां मॉडल राज्य Angular.js में संग्रहीत किया जाना चाहिए


Answers

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

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

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

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

// List of galleries
.../gallery

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

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

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

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

Question

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

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

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

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

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

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