मैं आपको स्कॉप्स के लिए आधिकारिक इन-डेप्थ एंगुलर डॉक्यूमेंट पढ़ने की सलाह देता हूं। 'स्कोप पदानुक्रम' अनुभाग पर शुरू करें:
https://docs.angularjs.org/guide/scope
अनिवार्य रूप से, $ rootScope और $ गुंजाइश दोनों डोम के विशिष्ट भागों की पहचान करते हैं जिसके भीतर
- कोणीय संचालन किया जाता है
- $ rootScope या $ गुंजाइश के भाग के रूप में घोषित चर उपलब्ध हैं
जो कुछ भी $ rootScope से संबंधित है, वह आपके Angular ऐप पर वैश्विक रूप से उपलब्ध है, जबकि $ स्कोप के अंतर्गत आने वाली कोई भी चीज़ DOM के उस हिस्से के भीतर उपलब्ध है, जिसके लिए वह स्कोप लागू होता है।
$ RootScope को DOM तत्व पर लागू किया जाता है जो कोणीय एप के लिए मूल तत्व है (इसलिए नाम $ rootScope)। जब आप DOM के एक तत्व में ng-app निर्देश जोड़ते हैं, तो यह DOM का मूल तत्व बन जाता है जिसके भीतर $ rootScope उपलब्ध है। दूसरे शब्दों में, $ rootScope के गुण आदि आपके संपूर्ण कोणीय अनुप्रयोग में उपलब्ध होंगे।
एक कोणीय $ गुंजाइश (और यह सब चर और संचालन) आपके आवेदन के भीतर डोम के एक विशेष सबसेट के लिए उपलब्ध है। विशेष रूप से, किसी विशेष नियंत्रक के लिए $ गुंजाइश डोम के उस हिस्से के लिए उपलब्ध है, जहां उस विशेष नियंत्रक को लागू किया गया है (एनजी-नियंत्रक निर्देश का उपयोग करके)। ध्यान दें कि कुछ निर्देश जैसे एनजी-रिपीट, जब डीओएम के एक हिस्से के भीतर लागू किया जाता है, जहां नियंत्रक लागू किया गया है, मुख्य दायरे के बाल स्कोप बना सकते हैं - एक ही नियंत्रक के भीतर - एक नियंत्रक में केवल एक गुंजाइश नहीं होती है।
अगर आप अपने एंगुलर ऐप को चलाते समय जेनरेट किए गए HTML को देखते हैं, तो आप आसानी से देख सकते हैं कि कौन से DOM एलिमेंट्स में 'स्कोप' है, क्योंकि एंगुलर किसी भी एलिमेंट पर क्लास एनग-स्कोप जोड़ता है जिसमें स्कोप लागू किया गया है (रूट एलिमेंट सहित) एप्लिकेशन, जिसमें $ rootScope है)।
वैसे, $ स्कोप और $ रूटस्स्कोप की शुरुआत में '$' का संकेत एंगुलर में केवल एक पहचानकर्ता है जो एंगुलर द्वारा आरक्षित है।
ध्यान दें कि मॉड्यूल और नियंत्रकों के बीच चर आदि साझा करने के लिए $ rootScope का उपयोग करना आमतौर पर सबसे अच्छा अभ्यास नहीं माना जाता है। जावास्क्रिप्ट डेवलपर्स वैश्विक चर के 'प्रदूषण' से बचने के बारे में बात करते हैं क्योंकि वहां चर साझा किए जाते हैं, क्योंकि बाद में यदि किसी अन्य नाम का एक चर कहीं और उपयोग किया जाता है, तो डेवलपर को यह पता चले बिना कि यह पहले से ही $ rootScope पर घोषित है। इसका महत्व अनुप्रयोग के आकार और इसे विकसित करने वाली टीम के साथ बढ़ता है। आदर्श रूप से $ rootScope में केवल स्थिरांक या स्थिर चर शामिल होंगे, जिनका उद्देश्य पूरे ऐप में हर समय सुसंगत होना है। मॉड्यूल भर में सामान साझा करने का एक बेहतर तरीका सेवाओं और कारखानों का उपयोग करना हो सकता है, जो एक और विषय है!