उदाहरण के साथ AngularJS में CUSTOM डायरेक्टिव कैसे बनाएं

विषय - सूची:

Anonim

कस्टम निर्देश क्या है?

कोणीय जेएस में एक कस्टम निर्देश आपकी इच्छित कार्यक्षमता के साथ एक उपयोगकर्ता-परिभाषित निर्देश है। भले ही AngularJS के पास बॉक्स से बहुत सारे शक्तिशाली निर्देश हों, लेकिन कुछ समय बाद कस्टम निर्देश की आवश्यकता होती है।

इस ट्यूटोरियल में, आप सीखेंगे-

  • कस्टम निर्देश कैसे बनाएं?
  • AngularJs के निर्देश और क्षेत्र
  • निर्देशों के साथ नियंत्रकों का उपयोग करना
  • पुन: प्रयोज्य निर्देश कैसे बनाएँ
  • AngularJS निर्देश और घटक - एनजी-ट्रांसक्लूड
  • निहित निर्देश
  • एक निर्देश में घटनाओं को संभालना

कस्टम निर्देश कैसे बनाएं?

आइए एक उदाहरण देखें कि हम एक कस्टम निर्देश कैसे बना सकते हैं।

हमारे मामले में कस्टम निर्देश बस एक div टैग को इंजेक्ट करने वाला है, जिसमें हमारे पेज पर "AngularJS Tutorial" का पाठ है, जब निर्देश कहा जाता है।

Event Registration

Guru99 Global Event

कोड स्पष्टीकरण:

  1. हम पहले अपने कोणीय अनुप्रयोग के लिए एक मॉड्यूल बना रहे हैं। यह एक कस्टम निर्देश बनाने के लिए आवश्यक है क्योंकि निर्देश इस मॉड्यूल का उपयोग करके बनाया जाएगा।
  2. अब हम "ngGuru" नामक एक कस्टम निर्देशन बना रहे हैं और एक फ़ंक्शन को परिभाषित कर रहे हैं जिसमें हमारे निर्देश के लिए कस्टम कोड होगा।

ध्यान दें:-

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

  1. हम टेम्पलेट पैरामीटर का उपयोग कर रहे हैं जो कस्टम निर्देशों के लिए कोणीय द्वारा परिभाषित पैरामीटर है। इसमें, हम परिभाषित कर रहे हैं कि जब भी इस निर्देश का उपयोग किया जाता है, तो बस टेम्पलेट के मूल्य का उपयोग करें और इसे कॉलिंग कोड में इंजेक्ट करें।
  2. अब हम अपने कस्टम निर्मित "एनजी-गुरु" निर्देश का उपयोग कर रहे हैं। जब हम ऐसा करते हैं, तो हमने अपने टेम्पलेट "
    कोणीय जेएस ट्यूटोरियल " के लिए निर्धारित मूल्य अब यहां इंजेक्ट किया जाएगा।

यदि कोड सफलतापूर्वक निष्पादित किया जाता है, तो ब्राउज़र में अपना कोड चलाते समय निम्न आउटपुट दिखाया जाएगा।

आउटपुट:

  • उपरोक्त आउटपुट स्पष्ट रूप से दर्शाता है कि हमारे कस्टम एनजी-गुरु निर्देश, जिसमें कस्टम टेक्स्ट दिखाने के लिए परिभाषित टेम्पलेट ब्राउज़र में प्रदर्शित होता है।

AngularJs के निर्देश और क्षेत्र

गुंजाइश को गोंद के रूप में परिभाषित किया गया है जो दृश्य और नियंत्रक के बीच डेटा को प्रबंधित करके नियंत्रक को दृश्य से बांधता है।

कस्टम AngularJs निर्देशों का निर्माण करते समय, वे डिफ़ॉल्ट रूप से पेरेंट कंट्रोलर में स्कोप ऑब्जेक्ट तक पहुंच पाएंगे।

इस तरह, मुख्य नियंत्रक को दिए जा रहे डेटा का उपयोग करने के लिए कस्टम निर्देश के लिए यह आसान हो जाता है।

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

Event Registration

Guru99 Global Event

कोड स्पष्टीकरण:

  1. हम पहले एक नियंत्रक बनाते हैं, जिसे "डेमोकंट्रोलर" कहा जाता है। इसमें, हम ट्यूटोरियलनाम नाम के एक वैरिएबल को परिभाषित करते हैं और इसे एक कथन में गुंजाइश ऑब्जेक्ट में संलग्न करते हैं - $ गुंजाइश।
  2. हमारे कस्टम निर्देश में, हम एक अभिव्यक्ति का उपयोग करके चर "tutorialName" कह सकते हैं। यह चर सुलभ होगा क्योंकि यह नियंत्रक "डेमोकंट्रोलर" में परिभाषित है, जो इस निर्देश के लिए माता-पिता बन जाएगा।
  3. हम नियंत्रक को एक div टैग में संदर्भित करते हैं, जो हमारे मूल div टैग के रूप में कार्य करेगा। ध्यान दें कि ट्यूटोरियलनेम वैरिएबल तक पहुँचने के लिए हमारे कस्टम निर्देश के लिए यह पहले किया जाना चाहिए।
  4. हम अंत में हमारे कस्टम डायरेक्शन "एनजी-गुरु" को अपने डिव टैग से जोड़ते हैं।

यदि कोड सफलतापूर्वक निष्पादित किया जाता है, तो ब्राउज़र में अपना कोड चलाते समय निम्न आउटपुट दिखाया जाएगा।

आउटपुट:

  • उपरोक्त आउटपुट स्पष्ट रूप से दर्शाता है कि हमारा कस्टम निर्देश "एनजी-गुरु" पेरेंट कंट्रोलर में स्कोप वैरिएबल ट्यूटोरियलनाम का उपयोग करता है।

निर्देशों के साथ नियंत्रकों का उपयोग करना

कोणीय वस्तु की आवश्यकता के बिना कस्टम निर्देशकों से सीधे नियंत्रक के सदस्य चर तक पहुंचने की सुविधा देता है ।

यह कई बार आवश्यक हो जाता है क्योंकि किसी एप्लिकेशन में आपके पास कई नियंत्रक से संबंधित कई स्कोप ऑब्जेक्ट्स हो सकते हैं।

इसलिए एक उच्च संभावना है कि आप गलत नियंत्रक की गुंजाइश वस्तु तक पहुंचने की गलती कर सकते हैं।

ऐसे परिदृश्य में विशेष रूप से यह कहने का एक तरीका है कि "मैं अपने निर्देशन से इस विशिष्ट नियंत्रक का उपयोग करना चाहता हूं"।

आइए एक उदाहरण देखें कि हम इसे कैसे प्राप्त कर सकते हैं।

Event Registration

Guru99 Global Event

कोड स्पष्टीकरण:

  1. हम पहले एक नियंत्रक बनाते हैं, जिसे "डेमोकंट्रोलर" कहा जाता है। इसमें हम "tutorialName" नामक एक चर को परिभाषित करेंगे और इस बार इसे गुंजाइश ऑब्जेक्ट में संलग्न करने के बजाय, हम इसे सीधे नियंत्रक से जोड़ देंगे।
  2. हमारे कस्टम निर्देश में, हम विशेष रूप से उल्लेख कर रहे हैं कि हम नियंत्रक पैरामीटर कीवर्ड का उपयोग करके नियंत्रक "डेमोकंट्रोलर" का उपयोग करना चाहते हैं।
  3. हम "कंट्रोलर" पैरामीटर का उपयोग करके नियंत्रक का संदर्भ बनाते हैं। यह कोणीय द्वारा परिभाषित किया गया है और नियंत्रक को संदर्भ के रूप में संदर्भित करने का तरीका है।

    नोट: - कंट्रोलर, कंट्रोलर और टेम्प्लेट स्टेटमेंट के संबंधित ब्लॉक्स को निर्दिष्ट करके एक निर्देश में कई कंट्रोलर्स को एक्सेस करना संभव है।

  4. अंत में, हमारे टेम्पलेट में, हम चरण 3 में बनाए गए संदर्भ का उपयोग कर रहे हैं और सदस्य चर का उपयोग कर रहे हैं जो सीधे चरण 1 में नियंत्रक से जुड़ा था।

यदि कोड सफलतापूर्वक निष्पादित किया जाता है, तो ब्राउज़र में अपना कोड चलाते समय निम्न आउटपुट दिखाया जाएगा।

आउटपुट:

आउटपुट स्पष्ट रूप से दिखाता है कि कस्टम निर्देश विशेष रूप से डेमोकंट्रोलर और सदस्य चर ट्यूटोरियलनाम तक पहुँच रहा है और इससे जुड़ा हुआ पाठ "कोणीय" प्रदर्शित करता है।

पुन: प्रयोज्य निर्देश कैसे बनाएँ

हमने पहले से ही कस्टम निर्देशों की शक्ति देखी है, लेकिन हम अपने स्वयं के पुन: प्रयोज्य निर्देशों का निर्माण करके अगले स्तर तक ले जा सकते हैं।

उदाहरण के लिए, उदाहरण के लिए, हम कोड को इंजेक्ट करना चाहते थे जो हमेशा नीचे दिए गए HTML टैग को कई स्क्रीन पर दिखाएगा, जो मूल रूप से उपयोगकर्ता के "नाम" और "आयु" के लिए केवल एक इनपुट है।

हर बार कोड किए बिना कई स्क्रीन पर इस फ़ंक्शन का पुन: उपयोग करने के लिए, हम इन नियंत्रणों (उपयोगकर्ता का "नाम" और "आयु") को धारण करने के लिए कोणीय में एक मास्टर नियंत्रण या निर्देश बनाते हैं।

इसलिए अब, हर बार नीचे के स्क्रीन के लिए एक ही कोड दर्ज करने के बजाय, हम वास्तव में इस कोड को एक निर्देश में एम्बेड कर सकते हैं और उस निर्देश को किसी भी समय पर एम्बेड कर सकते हैं।

आइए एक उदाहरण देखें कि हम इसे कैसे प्राप्त कर सकते हैं।

Event Registration

Guru99 Global Event

कोड स्पष्टीकरण:

  1. एक कस्टम निर्देश के लिए हमारे कोड स्निपेट में, क्या परिवर्तन सिर्फ मूल्य है जो हमारे कस्टम निर्देश के टेम्पलेट पैरामीटर को दिया गया है।

    एक योजना के पांच टैग या पाठ के बजाय, हम वास्तव में "नाम" और "आयु" के लिए 2 इनपुट नियंत्रणों के पूरे टुकड़े में प्रवेश कर रहे हैं, जिसे हमारे पृष्ठ पर दिखाया जाना चाहिए।

यदि कोड सफलतापूर्वक निष्पादित किया जाता है, तो ब्राउज़र में अपना कोड चलाते समय निम्न आउटपुट दिखाया जाएगा।

आउटपुट:

उपरोक्त आउटपुट से, हम देख सकते हैं कि कस्टम निर्देश के टेम्पलेट से कोड स्निपेट पेज पर जुड़ जाता है।

AngularJS निर्देश और घटक - एनजी-ट्रांसक्लूड

जैसा कि हमने पहले उल्लेख किया है, कोणीय HTML की कार्यक्षमता को बढ़ाने के लिए है। और हमने पहले ही देखा है कि कस्टम री-यूजेबल निर्देशों का उपयोग करके हम कोड इंजेक्शन कैसे लगा सकते हैं।

लेकिन आधुनिक वेब अनुप्रयोग विकास में, वेब घटकों को विकसित करने की अवधारणा भी है। जो मूल रूप से हमारे स्वयं के HTML टैग बनाने का मतलब है जो हमारे कोड में घटकों के रूप में उपयोग किया जा सकता है।

इसलिए कोणीय स्वयं HTML टैग में विशेषताओं को इंजेक्ट करने की क्षमता देकर HTML टैग को विस्तारित करने के लिए एक और स्तर की शक्ति प्रदान करता है।

यह " एनजी-ट्रांसक्लूड " टैग द्वारा किया जाता है , जो मार्कअप में निर्देश के अंदर रखी गई हर चीज को पकड़ने के लिए कोणीय बताने के लिए एक प्रकार की सेटिंग है।

आइए एक उदाहरण लेते हैं कि हम इसे कैसे प्राप्त कर सकते हैं।

Event Registration

Guru99 Global Event

Angular JS

कोड स्पष्टीकरण:

  1. हम 'pane' नामक एक कस्टम HTML टैग को परिभाषित करने के लिए निर्देश का उपयोग कर रहे हैं और एक फ़ंक्शन जोड़ रहे हैं जो इस टैग के लिए कुछ कस्टम कोड डाल देगा। आउटपुट में, हमारा कस्टम पैन टैग "AngularJS" टेक्स्ट को एक ठोस ब्लैक बॉर्डर के साथ आयत में प्रदर्शित करने वाला है।
  2. "ट्रांसक्लूड" विशेषता को सच के रूप में उल्लेख किया जाना चाहिए, जिसे इस टैग को हमारे डोम में इंजेक्ट करने के लिए कोणीय द्वारा आवश्यक है।
  3. दायरे में, हम एक शीर्षक विशेषता को परिभाषित कर रहे हैं। विशेषताएँ सामान्यतः नाम / मूल्य जोड़े जैसे: नाम = "मूल्य" के रूप में परिभाषित की जाती हैं। हमारे मामले में, हमारे फलक HTML टैग में विशेषता का नाम "शीर्षक" है। "@" प्रतीक कोणीय से आवश्यकता है। ऐसा इसलिए किया जाता है कि जब चरण शीर्षक = {{शीर्षक}} को चरण 5 में निष्पादित किया जाता है, शीर्षक विशेषता के लिए कस्टम कोड फलक HTML टैग में जोड़ा जाता है।
  4. शीर्षक विशेषताओं के लिए कस्टम कोड जो हमारे नियंत्रण के लिए एक ठोस काली सीमा खींचता है।
  5. अंत में, हम अपने कस्टम HTML टैग को शीर्षक विशेषता के साथ बुला रहे हैं जिसे परिभाषित किया गया था।

यदि कोड सफलतापूर्वक निष्पादित किया जाता है, तो ब्राउज़र में अपना कोड चलाते समय निम्न आउटपुट दिखाया जाएगा।

आउटपुट:

  • आउटपुट स्पष्ट रूप से दिखाता है कि फलक html5 टैग की शीर्षक विशेषता "Angular.JS" के कस्टम मूल्य पर सेट की गई है।

निहित निर्देश

कोणीय में निर्देशों को नेस्टेड किया जा सकता है। किसी भी प्रोग्रामिंग भाषा में सिर्फ आंतरिक मॉड्यूल या फ़ंक्शन की तरह, आपको एक दूसरे के भीतर निर्देशों को एम्बेड करने की आवश्यकता हो सकती है।

आप नीचे दिए गए उदाहरण को देखकर इसकी बेहतर समझ प्राप्त कर सकते हैं।

इस उदाहरण में, हम "बाहरी" और "आंतरिक" नामक 2 निर्देश बना रहे हैं।

  • आंतरिक निर्देश "इनर" नामक एक पाठ को प्रदर्शित करता है।
  • जबकि बाहरी निर्देश वास्तव में "इनर" नामक पाठ को प्रदर्शित करने के लिए आंतरिक निर्देश को कॉल करता है।


Guru99 Global Event

कोड स्पष्टीकरण:

  1. हम "बाहरी" नामक एक निर्देश बना रहे हैं जो हमारे माता-पिता के निर्देश के रूप में व्यवहार करेगा। यह निर्देश तब "आंतरिक" निर्देश के लिए एक कॉल करेगा।
  2. प्रतिबंधित: 'ई' को कोणीय द्वारा यह सुनिश्चित करने के लिए आवश्यक है कि आंतरिक निर्देश से डेटा बाहरी निर्देश के लिए उपलब्ध है। 'ई' अक्षर 'तत्व' शब्द का संक्षिप्त रूप है।
  3. यहां हम आंतरिक निर्देश बना रहे हैं जो "इनर" पाठ को डिव टैग में प्रदर्शित करता है।
  4. बाहरी निर्देश के लिए टेम्पलेट (# 4 चरण) में, हम आंतरिक निर्देश को बुला रहे हैं। इसलिए यहाँ पर हम टेम्पलेट को आंतरिक निर्देश से बाहरी निर्देश पर इंजेक्ट कर रहे हैं।
  5. अंत में, हम सीधे बाहरी निर्देश को बुला रहे हैं।

यदि कोड सफलतापूर्वक निष्पादित किया जाता है, तो ब्राउज़र में अपना कोड चलाते समय निम्न आउटपुट दिखाया जाएगा।

आउटपुट:

आउटपुट से,

  • यह देखा जा सकता है कि बाहरी और आंतरिक दोनों दिशाओं को बुलाया गया है, और दोनों div टैग में पाठ प्रदर्शित होते हैं।

एक निर्देश में घटनाओं को संभालना

माउस क्लिक या बटन क्लिक जैसी घटनाओं को निर्देशों के भीतर से ही नियंत्रित किया जा सकता है। यह लिंक फ़ंक्शन का उपयोग करके किया जाता है। लिंक फ़ंक्शन वह है जो निर्देश को HTML पृष्ठ में स्वयं को DOM तत्वों से संलग्न करने की अनुमति देता है।

वाक्य - विन्यास:

लिंक तत्व का सिंटैक्स नीचे दिखाया गया है

एनजी-दोहराने

link: function ($scope, element, attrs)

लिंक फ़ंक्शन आम तौर पर गुंजाइश सहित 3 मापदंडों को स्वीकार करता है, वह तत्व जो निर्देश के साथ जुड़ा हुआ है, और लक्ष्य तत्व की विशेषताएं।

आइए एक उदाहरण देखें कि हम इसे कैसे पूरा कर सकते हैं।

Event Registration

Guru99 Global Event

Click Me

कोड स्पष्टीकरण:

  1. हम HTML डोम में घटनाओं तक पहुंचने के लिए निर्देशों की क्षमता देने के लिए लिंक फ़ंक्शन का उपयोग कोणीय में परिभाषित के रूप में कर रहे हैं।
  2. हम 'एलिमेंट' कीवर्ड का उपयोग कर रहे हैं क्योंकि हम HTML DOM तत्व के लिए किसी घटना का जवाब देना चाहते हैं, जो हमारे मामले में "div" तत्व होगा। हम तब "बाइंड" फ़ंक्शन का उपयोग कर रहे हैं और कह रहे हैं कि हम तत्व के क्लिक इवेंट में कस्टम कार्यक्षमता जोड़ना चाहते हैं। 'क्लिक' शब्द एक कीवर्ड है, जिसका उपयोग किसी भी HTML नियंत्रण की क्लिक घटना को दर्शाने के लिए किया जाता है। उदाहरण के लिए, HTML बटन नियंत्रण में क्लिक इवेंट है। चूंकि, हमारे उदाहरण में, हम अपने "देव" टैग के क्लिक इवेंट में एक कस्टम कोड जोड़ना चाहते हैं, हम 'क्लिक' कीवर्ड का उपयोग करते हैं।
  3. यहां हम यह कह रहे हैं कि हम तत्व के आंतरिक HTML (हमारे मामले में div तत्व) को 'मुझे क्लिक करें!' पाठ के साथ बदलना चाहते हैं।
  4. यहाँ हम एनजी-गुरु कस्टम निर्देश का उपयोग करने के लिए अपने div टैग को परिभाषित कर रहे हैं।

यदि कोड सफलतापूर्वक निष्पादित किया जाता है, तो ब्राउज़र में अपना कोड चलाते समय निम्न आउटपुट दिखाया जाएगा।

आउटपुट:

  • प्रारंभ में टेक्स्ट 'क्लिक मी' को उपयोगकर्ता को दिखाया जाएगा क्योंकि यह वह है जो शुरू में डिव टैग में परिभाषित किया गया है। जब आप वास्तव में div टैग पर क्लिक करते हैं, तो नीचे आउटपुट दिखाया जाएगा

सारांश

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