2014-04-11 4 views
10

में $ rootScope पर किसी ऑब्जेक्ट को स्टोर करना ठीक है, तो मुझे प्रमाणीकरण पर कई ट्यूटोरियल दिखाई देते हैं जो $ रूटबॉल-अप से AngularFire-seed समेत रूट रूट में $ auth 'ऑब्जेक्ट डालते हैं।AngularJS

मैंने सोचा कि यह जड़ें पर वस्तुओं को रखने का बुरा अभ्यास था और इसके बजाय किसी को सेवा बनाना चाहिए। प्रमाणीकरण की बात आती है तो यह (जाहिर है) ठीक क्यों है? या बल्कि अधिक सामान्य प्रश्न: जड़ें पर कुछ डालने के लिए यह ठीक और शायद अच्छा अभ्यास कब होता है?

एक और उदाहरण देने के लिए। मेरे पास उपयोगकर्ता पर प्रोफाइल-ऑब्जेक्ट भी है। क्या यह ऑथ ऑब्जेक्ट में जोड़ना भी ठीक है? मैं इस मामले में जड़कोप को भी प्रदूषित नहीं करता, क्योंकि ऑथ-ऑब्जेक्ट पहले से ही वहां है। क्या प्रोफ़ाइल को इस तरह की जड़ की चोटी पर रखना है (ऑथ-ऑब्जेक्ट के माध्यम से)? यदि नहीं, क्यों?

मुझे पता है, यह कई सवाल था, लेकिन वे सभी क्योंकि जिस तरह से प्रोटोटाइप विरासत जावास्क्रिप्ट में काम करता है में से एक शीर्षक में qeustion करने के लिए नीचे उबाल ...

+0

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

+1

यदि डेटा सभी क्षेत्रों के लिए वास्तव में आम है तो $ rootScope उस डेटा को रखने के लिए एक पूरी तरह स्वीकार्य जगह है। – mccainz

+0

अच्छा रूटस्कोप-altnerative @ एट। मैं शायद इसका उपयोग नहीं करूंगा, लेकिन विकल्पों के बारे में जानना अच्छा है। – EricC

उत्तर

6

सबसे अधिक संभावना।

उदाहरण के लिए: क्लाइंट को पूरे ऐप में ऑथ क्रेडेंशियल्स की आवश्यकता होगी, $rootScope से बेहतर स्थान क्या है? (सिवाय इसके कि यदि आप इसे किसी सेवा में चाहते हैं और उस सेवा को पूरे कलाकृतियों में इंजेक्ट करें)। यह ऑथ डेटा ले जाने की क्रॉस कटिंग कार्यक्षमता को संबोधित करने के लिए एएसपीईसीटी की तरह काम करता है। $rootScope में ऑथ संबंधित डेटा जोड़कर, आप आसानी से scope से ऑथ विवरण प्राप्त कर सकते हैं जो स्पष्ट रूप से $rootScope (प्रोटोटाइपिकल विरासत के कारण) से विरासत में मिलता है।

यह अलग-अलग दायरे के साथ पर निर्देशों के लिए अच्छा नहीं है, लेकिन अलग-अलग दायरे के साथ-साथ चढ़ाई करने वाली दीवार के लिए छोटी होगी क्योंकि आपको प्रभावी 2-तरफा बाध्यकारी तंत्र मिल जाएगा।

+0

धन्यवाद, और आपके सभी विचारों का धन्यवाद :) मेरे लिए व्यावहारिक परिणाम यह है कि मैं $ रूटस्कोप पर ऑथ/सत्र ऑब्जेक्ट डालूंगा, क्योंकि इसका उपयोग लगभग सभी पृष्ठों पर किया जाएगा, लेकिन मेरा प्रोफाइल-ऑब्जेक्ट मैं नहीं जोड़ूंगा इस लेख/सत्र-वस्तु के लिए, क्योंकि मैं इसे केवल कुछ पृष्ठों/विचारों पर उपयोग करूंगा (वास्तव में, यह शीर्ष लेख (जैसे "हाय, एरिकसी") के माध्यम से सभी पृष्ठों पर दिखाई देगा, लेकिन हेडर एक ही टेम्पलेट है)। – EricC

+0

कोई भी नजदीक के दायरे में एक चर का नाम बदल सकता है जो जड़ को छुपा सकता है। इस तरह की कुछ चीज़ों के आधार पर बड़े अनुप्रयोगों के लिए अच्छा नहीं है। इस तरह के विवादों से बचने के लिए किसी को भी हर जगह जड़ें को इंजेक्ट करना होगा, इसलिए वैश्विक सेवा या स्थिर क्यों न करें? –

+0

यकीन है कि जड़ें प्रदूषित नहीं करने के लिए टिप्पणियां हैं। लेकिन मुझे इस बारे में कोई जानकारी नहीं मिली कि हमें जड़ें को प्रदूषित क्यों नहीं करना चाहिए और इसके पीछे कारण क्यों नहीं होना चाहिए? –