2013-09-02 8 views
6

अंडेहेड वीडियो के माध्यम से जाने पर, Directive to directive communication में से एक का सुझाव है कि हम 'इस' ऑब्जेक्ट में फ़ंक्शंस जोड़ने और अन्य निर्देशों से इसे एक्सेस करने के लिए नियंत्रक का उपयोग करते हैं।

पूरा वीडियो में इस्तेमाल किया कोड: Adding functions to this object

प्रासंगिक नियंत्रक कोड इस प्रकार है:

controller: function($scope){ 
     $scope.abilities = []; 
     this.addStrength = function(){ 
      $scope.abilities.push("Strength"); 
     } 

     this.addSpeed = function(){ 
      $scope.abilities.push("Speed"); 
     } 

     this.addFlight = function(){ 
      $scope.abilities.push("Flight"); 
     } 
    }, 

मैं करने के लिए काम करता है जोड़ने के बजाय सोच रहा था 'इस' कारण है कि यह $ करने के लिए जोड़ नहीं विशेष रूप से जब हम अलग-अलग दायरे का उपयोग कर रहे हैं तो दायरा?

कोड $ गुंजाइश के लिए कार्यों को जोड़ने: Adding functions to $scope इस प्रकार

प्रासंगिक नियंत्रक कोड के रूप में:

controller: function($scope){ 
     $scope.abilities = []; 
     $scope.addStrength = function(){ 
      $scope.abilities.push("Strength"); 
     }; 

     $scope.addSpeed = function(){ 
      $scope.abilities.push("Speed"); 
     }; 

     $scope.addFlight = function(){ 
      $scope.abilities.push("Flight"); 
     }; 
    }, 

या क्यों सब पर नियंत्रक समारोह है। एक ही परिणाम प्राप्त करने के लिए हम लिंक फ़ंक्शन का उपयोग क्यों नहीं कर सकते?

लिंक समारोह में $ गुंजाइश के लिए कार्यों जोड़ना: Using link funtciont instead of controller

प्रासंगिक नियंत्रक और लिंक समारोह इस प्रकार है के रूप में:

controller: function($scope){ 
     $scope.abilities = []; 
     $scope.addStrength = function(){ 
      $scope.abilities.push("Strength"); 
     }; 

     $scope.addSpeed = function(){ 
      $scope.abilities.push("Speed"); 
     }; 

     $scope.addFlight = function(){ 
      $scope.abilities.push("Flight"); 
     }; 
    }, 

मैं बहुत यकीन है कि वहाँ नियंत्रक और इस वस्तु का उपयोग करने के वैध कारण है हूँ । मैं समझने में सक्षम नहीं हूं क्यों। अगर कोई समझा सकता है कि यह सहायक होगा।

उत्तर

4

आप सही हैं कि link फ़ंक्शन में फ़ंक्शंस का पर्दाफाश करें और उसी परिणाम प्राप्त करें। निर्देशक नियंत्रक एक विषम पक्षी हैं, लेकिन जैसा कि मैंने अधिक जटिल निर्देश लिखे हैं, मैंने नियंत्रकों में जितना अधिक व्यवहार धक्का दिया है और link फ़ंक्शन में डोम से संबंधित सामग्री को छोड़ दिया है। इसका कारण यह है कि:

  • मैं अपने निर्देश के अंदर कार्य करने के बजाय नियंत्रक नाम में पास कर सकता हूं; चीजें क्लीनर आईएमओ
  • नियंत्रक भाई या संबंधित निर्देशों के अंदर उपयोग की जाने वाली सार्वजनिक एपीआई का पर्दाफाश कर सकते हैं ताकि आप कुछ इंटरऑप और एसओसी को प्रोत्साहित कर सकें।
  • यदि आप चाहें तो निर्देश संकलन के अलावा आप नियंत्रक परीक्षण को अलग कर सकते हैं।

मैं आम तौर पर केवल नियंत्रक परिचय जब वहाँ शायद जटिल राज्य संक्रमण कर रहे हैं, बाह्य संसाधनों संभाला जा रहा (यानी $ http), या यदि पुन: उपयोग के लिए चिंता का विषय है।

आपको ध्यान रखना चाहिए कि कोणीय 1.2 निर्देशकों पर 'नियंत्रक एएस' का खुलासा करता है जो आपको सीधे निर्देशक टेम्पलेट में नियंत्रक का उपभोग करने और $ स्कोप संरचना का परिचय देने वाले समारोह को कम करने की अनुमति देता है।

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