दोनों के अपने उपयोग हैं। पहला, कुछ इतिहास ...
$ गुंजाइश "क्लासिक" तकनीक है, जबकि "नियंत्रक के रूप में" बहुत अधिक हालिया है (संस्करण 1.2.0 के रूप में आधिकारिक तौर पर हालांकि यह इससे पहले अस्थिर प्री-रिलीज़ में दिखाई दिया था)।
दोनों पूरी तरह से अच्छी तरह से काम करते हैं और एकमात्र गलत उत्तर उन्हें बिना किसी स्पष्ट कारण के एक ही ऐप में मिलाना है। सच कहूँ तो, उन्हें मिश्रण काम करेगा, लेकिन यह सिर्फ भ्रम में जोड़ देगा। इसलिए एक को चुनें और उसके साथ रोल करें। सबसे महत्वपूर्ण बात सुसंगत होना है।
कौनसा? वह आप पर निर्भर करता है। $ गुंजाइश के कई और उदाहरण हैं, लेकिन "नियंत्रक" भाप को भी उठा रहा है। क्या यह दूसरे से बढ़िया है? कि यह बहस का मुद्दा है। तो आप कैसे चुनते हैं?
आराम
मैं "नियंत्रक के रूप में" पसंद करता हूं क्योंकि मुझे $ गुंजाइश छिपाना और नियंत्रक से सदस्यों को एक मध्यस्थ वस्तु के माध्यम से दृश्य में उजागर करना पसंद है। इसे सेट करके। *, मैं केवल वही देख सकता हूं जो मैं नियंत्रक से दृश्य में प्रकट करना चाहता हूं। आप $ गुंजाइश के साथ भी ऐसा कर सकते हैं, मैं सिर्फ इसके लिए मानक जावास्क्रिप्ट का उपयोग करना पसंद करता हूं। वास्तव में, मैं इसे इस तरह से कोड करता हूं:
var vm = this;
vm.title = 'some title';
vm.saveData = function(){ ... } ;
return vm;
यह मेरे लिए साफ-सुथरा महसूस करता है और यह देखने में आसान बनाता है कि दृश्य में क्या उजागर हो रहा है। ध्यान दें कि मैं उस चर का नाम देता हूं जिसे मैं "vm" लौटाता हूं, जो देखने के लिए खड़ा है। वह सिर्फ मेरा अधिवेशन है।
$ गुंजाइश के साथ मैं वही चीजें कर सकता हूं, इसलिए मैं तकनीक के साथ नहीं जोड़ रहा हूं या नहीं कर रहा हूं।
$scope.title = 'some title';
$scope.saveData = function() { ... };
तो यह आप पर निर्भर है।
इंजेक्शन
$ स्कोप के साथ मुझे कंट्रोलर में $ स्कोप इंजेक्ट करने की आवश्यकता है। मुझे नियंत्रक के साथ ऐसा करने की आवश्यकता नहीं है, जब तक कि मुझे किसी अन्य कारण (जैसे $ प्रसारण या घड़ियों की आवश्यकता न हो, हालांकि मैं नियंत्रक में घड़ियों से बचने की कोशिश करता हूं)।
अद्यतन
मैंने इस पोस्ट को 2 विकल्पों के बारे में लिखा है:
http://www.johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/