17

मैं अपने निर्देशों में 'नियंत्रक एएस' विकल्प का उपयोग करना चाहता हूं। मुझे "An AngularJS Style Guide for Closure Users at Google" से तर्क का हवाला देते हैं:"नियंत्रक के रूप में" बनाम अलगाव स्कोप

क्यों? एक स्कोप ऑब्जेक्ट बनाने के बजाय सीधे नियंत्रक, पर विधियों और गुणों को डालने, Google क्लोजर क्लास शैली के साथ बेहतर फिट बैठता है। इसके अतिरिक्त, 'नियंत्रक के रूप में' का उपयोग करके यह स्पष्ट करता है कि आप कौन से नियंत्रक तक पहुंच रहे हैं जब एकाधिक नियंत्रक किसी तत्व पर लागू होते हैं। चूंकि हमेशा एक '।' होता है बाइंडिंग में, आप प्रोटोटाइप विरासत मास्किंग प्राइमेटिव के बारे में चिंता करने की ज़रूरत नहीं है।

लेकिन अगर इस निर्देश का उपयोग करने के लिए मैं इस दृष्टिकोण का उपयोग कर एक मुद्दा देख सकता हूं तो निर्देश अलग-अलग दायरे को अलग करता है।

angular.module('cmw').directive('fooWidget', function() { 
    return { 
     controller: function() { 
      this.qux = '123'; 
     }, 
     controllerAs: 'fooWidget', 
     scope: { 
      bar: '=' 
     }, 
     template: ' {{fooWidget.qux}} {{bar}} ' 
    }; 
}); 

इस मामले में, bar संपत्ति दायरे से जुड़ा हुआ है, नियंत्रक, जो एक भ्रामक असंगत स्थिति है जहाँ विभिन्न गुणों विभिन्न स्थानों में लिए देखा जाना चाहिए में जो परिणाम के लिए नहीं। इस के आसपास काम करने के लिए 'आधिकारिक' अनुशंसित तरीका क्या है?

अद्यतन: इस बारे में GitHub issue देखें।

उत्तर

8

यह bindToController संपत्ति directive API पर जोड़कर कोणीय 1.3 में हल किया गया था।

2

ऐसा करने के लिए "आधिकारिक" पैटर्न खोजना मुश्किल है। निजी तौर पर, मुझे लगता है कि यह आपके लक्ष्य पर निर्भर करता है।

यदि आप किसी निर्देश से बाहरी दुनिया में जानकारी का खुलासा करना चाहते हैं, तो अलग-अलग दायरे का उपयोग करें क्योंकि यह वहां मौजूद कारणों में से एक है। उस 'एपीआई' को निर्देश में पूरी तरह से परिभाषित नहीं किया जाना चाहिए, इसे एंगुलरजेएस सेवा में परिभाषित किया जा सकता है जिसे आप निर्देश में इंजेक्ट करते हैं और अलग-अलग स्कोप के माध्यम से उजागर करते हैं, जिस तरह से आपके पास एक निर्देश है जो मुख्य रूप से यूआई के साथ है एक सेवा के साथ जो किसी भी व्यावसायिक तर्क को संभालती है।

यदि आप निर्देशों के बीच संवाद कर रहे हैं, तो जहां नियंत्रक को प्राथमिकता दी जाती है।

लेकिन कोशिश करते हैं और कुछ और अधिकारी जानकारी प्राप्त करने के लिए, यहाँ के निर्देशों के साथ नियंत्रकों के उपयोग पर AngularJS वेबसाइट से जानकारी है:

बेस्ट प्रैक्टिस: उपयोग नियंत्रक जब आप अन्य निर्देशों के लिए एक एपीआई का पर्दाफाश करना चाहते हैं । अन्यथा लिंक का उपयोग करें।

मैंने व्यक्तिगत रूप से निर्देशक-निर्देश-निर्देश संचार को छोड़कर निर्देशकों में निर्देशकों का उपयोग कभी नहीं देखा है। मैं नहीं कह रहा हूं कि आप उनका उपयोग नहीं कर सकते हैं, मैंने इसे अभी नहीं देखा है। इसके अलावा, अगर आप बाहरी दुनिया में नियंत्रक तर्क का पर्दाफाश करना चाहते हैं, तो आपको अलग-अलग दायरे से बाध्य करना होगा, इसलिए यह वास्तव में आप जो करना चाहते हैं उस पर निर्भर करता है।

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