2015-07-08 12 views
7

का उपयोग कर क्या इन 2 के बीच अंतर है नियंत्रकों। वाक्यविन्यास जावा और सीसामान्य रूप में समारोह या सरणी संकेतन

से बहुत अलग है।

+1

इस पढ़ें: https: //docs.angularjs। संगठन/गाइड/डी # इनलाइन-सरणी-एनोटेशन –

उत्तर

2

दूसरा छोटा वितरण सुरक्षित है।

के बाद से कोणीय, नियंत्रक के निर्माता कार्य करने के लिए तर्क के नाम से नियंत्रक के निर्भरता infers कम करें PhoneListCtrl नियंत्रक के लिए जावा स्क्रिप्ट कोड, अपने समारोह सभी तर्क के साथ-साथ न्यूनतम किया गया होगा अगर आप के लिए गए थे, और निर्भरता इंजेक्टर सही ढंग से सेवाओं की पहचान करने में सक्षम नहीं होगा।

Source

+0

बहुत उपयोगी उत्तर वेन, धन्यवाद – Ben

13

उन दोनों के बीच कुछ भी नहीं अंतर नहीं है। दोनों कोड एक ही तरीके से काम करता है। लेकिन अगर आप पहले कोड का उपयोग करते हैं और जब आप कोड को छोटा करते हैं तो यह भ्रमित हो जाएगा। एक उदाहरण के लिए

देखो:

.controller('MyController', function(a){...});//$scope is changed to a 

और अपने कोड के रूप में AngularJS कोड $ गुंजाइश चर का उपयोग करता है यह पहली बार मानकों के आधार पर नहीं ले करता है, दूसरा, तीसरा, और इतनी के रूप में काम नहीं करेगा।

तो, दूसरा कोड पहले से सुरक्षित है जैसे कि जब आप कोड को छोटा करते हैं, तो यह अभी भी वैरिएबल यानी $ स्कोप लेता है। एक उदाहरण के लिए

देखो:

.controller('MyController', ['$scope', function(a){...})];//a refers to $scope 

तो, इसके बाद के संस्करण कोड ठीक काम करता है के रूप में $ गुंजाइश एक के स्थान पर इंजेक्ट किया जाता है जब आप कोड कम करें। इसलिए, यदि आप कई पैरामीटर पास करते हैं तो इस उदाहरण में मामलों को ऑर्डर करना। निम्न को देखें:

.controller('MyController', ['$scope','$timeout', function(s,t){...})]; एस $ स्कोप के रूप में इंजेक्शन दिया गया है और टी को $ टाइमआउट के रूप में इंजेक्शन दिया गया है। तो यदि आप ['$timeout','$scope', function(s,t){...})] जैसे ऑर्डर को बदलते हैं तो एस $ टाइमआउट है और टी $ स्कोप है। इसलिए, इस उदाहरण में मामलों को ऑर्डर करना, लेकिन आपके पहले उदाहरण कोड ऑर्डरिंग में $ स्कोप, $ टाइमआउट जैसे नामों के मामले में कोई फर्क नहीं पड़ता।


वहाँ भी है एक और तरीका है चर सुई अगर आप नीचे दिए की तरह अपना पहला उदाहरण कोड का उपयोग करें:

MyController.$inject = ['$scope']; 

से अधिक पैरामीटर के लिए,

MyController.$inject = ['$scope','$timeout']; 

तो, वहाँ मुख्य रूप से कर रहे हैं तीन प्रकार के annotation:

  1. अंतर्निहित एनोटेशन - अपना पहला उदाहरण कोड
  2. $ इंजेक्षन संपत्ति एनोटेशन - $ इंजेक्षन विधि
  3. इनलाइन सरणी एनोटेशन - अपने दूसरे उदाहरण कोड
+0

बहुत सारे भोजेंद्र नेपाल का धन्यवाद। आपका जवाब – Ben

+0

को समझना बहुत आसान है आपका स्वागत है! –

संबंधित मुद्दे