Πώς να δημιουργήσετε οδηγία CUSTOM στο AngularJS με παράδειγμα

Πίνακας περιεχομένων:

Anonim

Τι είναι η προσαρμοσμένη οδηγία;

Μια προσαρμοσμένη οδηγία στο Angular Js είναι μια οδηγία καθορισμένη από το χρήστη με την επιθυμητή λειτουργικότητά σας. Παρόλο που το AngularJS έχει πολλές ισχυρές οδηγίες έξω από το κουτί, μερικές φορές απαιτούνται προσαρμοσμένες οδηγίες.

Σε αυτό το σεμινάριο, θα μάθετε-

  • Πώς να δημιουργήσετε μια προσαρμοσμένη οδηγία;
  • Οδηγίες και Πεδίο εφαρμογής της AngularJs
  • Χρήση ελεγκτών με οδηγίες
  • Πώς να δημιουργήσετε επαναχρησιμοποιήσιμες οδηγίες
  • Οδηγίες και στοιχεία του AngularJS - ng-transclude
  • Ένθετες οδηγίες
  • Χειρισμός εκδηλώσεων σε μια οδηγία

Πώς να δημιουργήσετε μια προσαρμοσμένη οδηγία;

Ας ρίξουμε μια ματιά σε ένα παράδειγμα του πώς μπορούμε να δημιουργήσουμε μια προσαρμοσμένη οδηγία.

Η προσαρμοσμένη οδηγία στην περίπτωσή μας πρόκειται απλώς να εισαγάγει μια ετικέτα div που έχει το κείμενο "AngularJS Tutorial" στη σελίδα μας όταν καλείται η οδηγία.

Event Registration

Guru99 Global Event

Επεξήγηση κώδικα:

  1. Δημιουργούμε πρώτα μια ενότητα για τη γωνιακή εφαρμογή μας. Αυτό απαιτείται για τη δημιουργία μιας προσαρμοσμένης οδηγίας, επειδή η οδηγία θα δημιουργηθεί χρησιμοποιώντας αυτήν την ενότητα.
  2. Τώρα δημιουργούμε μια προσαρμοσμένη οδηγία που ονομάζεται "ngGuru" και ορίζουμε μια συνάρτηση που θα έχει προσαρμοσμένο κώδικα για την οδηγία μας.

Σημείωση:-

Σημειώστε ότι κατά τον ορισμό της οδηγίας, την ορίσαμε ως ngGuru με το γράμμα «G» ως κεφαλαίο. Και όταν το έχουμε πρόσβαση από την ετικέτα div ως οδηγία, έχουμε πρόσβαση σε αυτό ως ng-γκουρού. Έτσι κατανοεί η γωνιακή προσαρμοσμένη οδηγία που ορίζεται σε μια εφαρμογή. Πρώτον, το όνομα της προσαρμοσμένης οδηγίας πρέπει να ξεκινά με τα γράμματα «ng». Δεύτερον, το σύμβολο παύλας «-» πρέπει να αναφέρεται μόνο όταν καλείτε την οδηγία. Και τρίτον, το πρώτο γράμμα που ακολουθεί τα γράμματα «ng» κατά τον ορισμό της οδηγίας μπορεί να είναι είτε πεζό ή κεφαλαίο.

  1. Χρησιμοποιούμε την παράμετρο προτύπου την οποία μια παράμετρος ορίζεται από το Angular για προσαρμοσμένες οδηγίες. Σε αυτό, ορίζουμε ότι όποτε χρησιμοποιείται αυτή η οδηγία, τότε απλώς χρησιμοποιήστε την τιμή του προτύπου και εισάγετε τον στον κωδικό κλήσης.
  2. Εδώ χρησιμοποιούμε τώρα την προσαρμοσμένη οδηγία "ng-guru". Όταν το κάνουμε αυτό, η τιμή που ορίσαμε για το πρότυπό μας "
    Angular JS Tutorial
    " θα εισαχθεί τώρα εδώ.

Εάν ο κωδικός εκτελεστεί με επιτυχία, η ακόλουθη έξοδος θα εμφανιστεί όταν εκτελείτε τον κωδικό σας στο πρόγραμμα περιήγησης.

Παραγωγή:

  • Η παραπάνω έξοδος δείχνει ξεκάθαρα ότι η προσαρμοσμένη οδηγία ng-guru, η οποία έχει το πρότυπο που ορίζεται για την εμφάνιση ενός προσαρμοσμένου κειμένου εμφανίζεται στο πρόγραμμα περιήγησης.

Οδηγίες και Πεδίο εφαρμογής της AngularJs

Το εύρος ορίζεται ως η κόλλα που δεσμεύει τον ελεγκτή στην προβολή διαχειρίζοντας τα δεδομένα μεταξύ της προβολής και του ελεγκτή.

Κατά τη δημιουργία προσαρμοσμένων οδηγιών AngularJs, από προεπιλογή θα έχουν πρόσβαση στο αντικείμενο πεδίου στον γονικό ελεγκτή.

Με αυτόν τον τρόπο, καθίσταται εύκολο για την προσαρμοσμένη οδηγία να κάνει χρήση των δεδομένων που διαβιβάζονται στον κύριο ελεγκτή.

Ας δούμε ένα παράδειγμα για το πώς μπορούμε να χρησιμοποιήσουμε το πεδίο εφαρμογής ενός γονικού ελεγκτή στην προσαρμοσμένη οδηγία.

Event Registration

Guru99 Global Event

Επεξήγηση κώδικα:

  1. Αρχικά δημιουργήσαμε έναν ελεγκτή που ονομάζεται "DemoController". Σε αυτό, ορίζουμε μια μεταβλητή που ονομάζεται tutorialName και την προσαρτάμε στο αντικείμενο πεδίου σε μία δήλωση - $ lingkop.tutorialName = "AngularJS".
  2. Στην προσαρμοσμένη οδηγία, μπορούμε να καλέσουμε τη μεταβλητή "tutorialName" χρησιμοποιώντας μια έκφραση. Αυτή η μεταβλητή θα ήταν προσβάσιμη επειδή ορίζεται στον ελεγκτή "DemoController", ο οποίος θα γινόταν ο γονέας για αυτήν την οδηγία.
  3. Αναφερόμαστε στον ελεγκτή σε μια ετικέτα div, η οποία θα ενεργεί ως η γονική ετικέτα div. Λάβετε υπόψη ότι αυτό πρέπει να γίνει πρώτα, προκειμένου η προσαρμοσμένη οδηγία να έχει πρόσβαση στη μεταβλητή tutorialName.
  4. Τέλος απλώς επισυνάπτουμε την προσαρμοσμένη οδηγία "ng-guru" στην ετικέτα div.

Εάν ο κωδικός εκτελεστεί με επιτυχία, η ακόλουθη έξοδος θα εμφανιστεί όταν εκτελείτε τον κωδικό σας στο πρόγραμμα περιήγησης.

Παραγωγή:

  • Η παραπάνω έξοδος δείχνει ξεκάθαρα ότι η προσαρμοσμένη οδηγία μας "ng-guru" κάνει χρήση του πεδίου μεταβλητού πεδίου tutorialName στον γονικό ελεγκτή.

Χρήση ελεγκτών με οδηγίες

Το Angular δίνει τη δυνατότητα πρόσβασης στη μεταβλητή μέλους του ελεγκτή απευθείας από προσαρμοσμένες οδηγίες χωρίς την ανάγκη του αντικειμένου πεδίου.

Αυτό καθίσταται απαραίτητο μερικές φορές επειδή σε μια εφαρμογή ενδέχεται να έχετε αντικείμενα πολλαπλών πεδίων που ανήκουν σε πολλούς ελεγκτές.

Υπάρχει, λοιπόν, μεγάλη πιθανότητα να κάνετε το λάθος να αποκτήσετε πρόσβαση στο αντικείμενο αντικειμένου του λανθασμένου ελεγκτή.

Σε ένα τέτοιο σενάριο υπάρχει ένας τρόπος να αναφέρω συγκεκριμένα λέγοντας "Θέλω να έχω πρόσβαση σε αυτόν τον συγκεκριμένο ελεγκτή" από την οδηγία μου.

Ας ρίξουμε μια ματιά σε ένα παράδειγμα για το πώς μπορούμε να το επιτύχουμε αυτό.

Event Registration

Guru99 Global Event

Επεξήγηση κώδικα:

  1. Αρχικά δημιουργήσαμε έναν ελεγκτή που ονομάζεται "DemoController". Σε αυτό θα ορίσουμε μια μεταβλητή που ονομάζεται "tutorialName" και αυτή τη φορά αντί να την συνδέσουμε στο αντικείμενο πεδίου, θα την επισυνάψουμε απευθείας στον ελεγκτή.
  2. Στην προσαρμοσμένη οδηγία, αναφέρουμε συγκεκριμένα ότι θέλουμε να χρησιμοποιήσουμε τον ελεγκτή "DemoController" χρησιμοποιώντας τη λέξη-κλειδί παραμέτρου ελεγκτή.
  3. Δημιουργούμε μια αναφορά στον ελεγκτή χρησιμοποιώντας την παράμετρο "controllerAs". Αυτό ορίζεται από το Angular και είναι ο τρόπος αναφοράς του ελεγκτή ως αναφοράς.

    Σημείωση: - Είναι δυνατή η πρόσβαση σε πολλούς ελεγκτές σε μια οδηγία καθορίζοντας αντίστοιχα μπλοκ του ελεγκτή, του ελεγκτή και των προτύπων.

  4. Τέλος, στο πρότυπό μας, χρησιμοποιούμε την αναφορά που δημιουργήθηκε στο βήμα 3 και χρησιμοποιούμε τη μεταβλητή μέλους που προσαρτήθηκε απευθείας στον ελεγκτή στο Βήμα 1.

Εάν ο κωδικός εκτελεστεί με επιτυχία, η ακόλουθη έξοδος θα εμφανιστεί όταν εκτελείτε τον κωδικό σας στο πρόγραμμα περιήγησης.

Παραγωγή:

Η έξοδος δείχνει ξεκάθαρα ότι η προσαρμοσμένη οδηγία έχει ειδική πρόσβαση στο DemoController και στο μέλος μεταβλητή tutorialName που επισυνάπτεται σε αυτό και εμφανίζει το κείμενο "Angular".

Πώς να δημιουργήσετε επαναχρησιμοποιήσιμες οδηγίες

Έχουμε ήδη δει τη δύναμη των προσαρμοσμένων οδηγιών, αλλά μπορούμε να το φτάσουμε στο επόμενο επίπεδο δημιουργώντας τις δικές μας επαναχρησιμοποιούμενες οδηγίες.

Ας πούμε, για παράδειγμα, ότι θέλαμε να εισάγουμε κώδικα που θα εμφανίζει πάντα τις παρακάτω ετικέτες HTML σε πολλές οθόνες, ο οποίος βασικά είναι απλώς μια εισαγωγή για το "Όνομα" και την "ηλικία" του χρήστη.

Για να επαναχρησιμοποιήσουμε αυτήν τη λειτουργία σε πολλές οθόνες χωρίς να κωδικοποιούμε κάθε φορά, δημιουργούμε ένα κύριο στοιχείο ελέγχου ή μια γωνιακή οδηγία για να κρατούμε αυτά τα στοιχεία ελέγχου ("Όνομα" και "ηλικία" του χρήστη)

Τώρα, αντί να εισάγουμε τον ίδιο κωδικό για την παρακάτω οθόνη κάθε φορά, μπορούμε πραγματικά να ενσωματώσουμε αυτόν τον κώδικα σε μια οδηγία και να ενσωματώσουμε αυτήν την οδηγία ανά πάσα στιγμή.

Ας δούμε ένα παράδειγμα για το πώς μπορούμε να το επιτύχουμε.

Event Registration

Guru99 Global Event

Επεξήγηση κώδικα:

  1. Στο απόσπασμα κώδικα για μια προσαρμοσμένη οδηγία, αυτό που αλλάζει είναι μόνο η τιμή που δίνεται στην παράμετρο προτύπου της προσαρμοσμένης οδηγίας.

    Αντί για ένα σχέδιο πέντε ετικετών ή κειμένου, εισάγουμε πραγματικά ολόκληρο το τμήμα των 2 στοιχείων ελέγχου εισαγωγής για το "Όνομα" και το "ηλικία" που πρέπει να εμφανίζονται στη σελίδα μας.

Εάν ο κωδικός εκτελεστεί με επιτυχία, η ακόλουθη έξοδος θα εμφανιστεί όταν εκτελείτε τον κωδικό σας στο πρόγραμμα περιήγησης.

Παραγωγή:

Από την παραπάνω έξοδο, μπορούμε να δούμε ότι το απόσπασμα κώδικα από το πρότυπο της προσαρμοσμένης οδηγίας προστίθεται στη σελίδα.

Οδηγίες και στοιχεία του AngularJS - ng-transclude

Όπως αναφέραμε πολύ νωρίτερα, το Angular έχει σκοπό να επεκτείνει τη λειτουργικότητα του HTML. Και έχουμε ήδη δει πώς μπορούμε να κάνουμε έγχυση κώδικα χρησιμοποιώντας προσαρμοσμένες επαναχρησιμοποιήσιμες οδηγίες.

Όμως, στη σύγχρονη ανάπτυξη εφαρμογών ιστού, υπάρχει επίσης μια ιδέα ανάπτυξης συστατικών ιστού. Αυτό σημαίνει βασικά τη δημιουργία των δικών μας ετικετών HTML που μπορούν να χρησιμοποιηθούν ως συστατικά στον κώδικα μας.

Ως εκ τούτου, η γωνιακή παρέχει ένα άλλο επίπεδο ισχύος για την επέκταση των ετικετών HTML, δίνοντας τη δυνατότητα να εισάγετε χαρακτηριστικά στις ίδιες τις ετικέτες HTML.

Αυτό γίνεται με την ετικέτα " ng-transclude ", η οποία είναι ένα είδος ρύθμισης για να πείτε στη γωνία να καταγράφει ό, τι περιλαμβάνεται στην οδηγία στη σήμανση.

Ας πάρουμε ένα παράδειγμα για το πώς μπορούμε να το επιτύχουμε αυτό.

Event Registration

Guru99 Global Event

Angular JS

Επεξήγηση κώδικα:

  1. Χρησιμοποιούμε την οδηγία για να ορίσουμε μια προσαρμοσμένη ετικέτα HTML που ονομάζεται "pane" και προσθέτουμε μια συνάρτηση που θα βάλει κάποιο προσαρμοσμένο κώδικα για αυτήν την ετικέτα. Στην έξοδο, η προσαρμοσμένη ετικέτα παραθύρου μας θα εμφανίσει το κείμενο "AngularJS" σε ένα ορθογώνιο με συμπαγές μαύρο περίγραμμα.
  2. Το χαρακτηριστικό "transclude" πρέπει να αναφέρεται ως αληθινό, το οποίο απαιτείται από τη γωνιακή για την ένεση αυτής της ετικέτας στο DOM μας.
  3. Στο πεδίο εφαρμογής, ορίζουμε ένα χαρακτηριστικό τίτλου. Τα χαρακτηριστικά ορίζονται συνήθως ως ζεύγη ονόματος / τιμής όπως: name = "value". Στην περίπτωσή μας, το όνομα του χαρακτηριστικού στην ετικέτα HTML του παραθύρου μας είναι "τίτλος". Το σύμβολο "@" είναι η απαίτηση από γωνιακό. Αυτό γίνεται έτσι ώστε όταν εκτελείται ο τίτλος γραμμής = {{title}} στο Βήμα 5, ο προσαρμοσμένος κώδικας για το χαρακτηριστικό title προστίθεται στην ετικέτα HTML του παραθύρου.
  4. Ο προσαρμοσμένος κώδικας για τα χαρακτηριστικά τίτλου που σχεδιάζει απλώς ένα μαύρο περίγραμμα για τον έλεγχό μας.
  5. Τέλος, καλούμε την προσαρμοσμένη ετικέτα HTML μαζί με το χαρακτηριστικό τίτλου που ορίστηκε.

Εάν ο κωδικός εκτελεστεί με επιτυχία, η ακόλουθη έξοδος θα εμφανιστεί όταν εκτελείτε τον κωδικό σας στο πρόγραμμα περιήγησης.

Παραγωγή:

  • Η έξοδος δείχνει καθαρά ότι το χαρακτηριστικό τίτλου της ετικέτας html5 του παραθύρου έχει οριστεί στην προσαρμοσμένη τιμή του "Angular.JS".

Ένθετες οδηγίες

Οι οδηγίες στη γωνιακή μπορούν να τοποθετηθούν. Όπως ακριβώς εσωτερικές ενότητες ή λειτουργίες σε οποιαδήποτε γλώσσα προγραμματισμού, ίσως χρειαστεί να ενσωματώσετε οδηγίες μεταξύ τους.

Μπορείτε να κατανοήσετε καλύτερα αυτό βλέποντας το παρακάτω παράδειγμα.

Σε αυτό το παράδειγμα, δημιουργούμε 2 οδηγίες που ονομάζονται "εξωτερικό" και "εσωτερικό".

  • Η εσωτερική οδηγία εμφανίζει ένα κείμενο που ονομάζεται "Εσωτερικό".
  • Ενώ η εξωτερική οδηγία καλεί πραγματικά την εσωτερική οδηγία να εμφανίσει το κείμενο που ονομάζεται "Εσωτερικό".


Guru99 Global Event

Επεξήγηση κώδικα:

  1. Δημιουργούμε μια οδηγία που ονομάζεται «εξωτερική», η οποία θα συμπεριφέρεται ως οδηγία για τους γονείς μας. Αυτή η οδηγία θα κάνει τότε έκκληση στην "εσωτερική" οδηγία.
  2. Ο περιορισμός: «E» απαιτείται γωνιακά για να διασφαλιστεί ότι τα δεδομένα από την εσωτερική οδηγία είναι διαθέσιμα στην εξωτερική οδηγία. Το γράμμα «Ε» είναι η σύντομη μορφή της λέξης «Στοιχείο».
  3. Εδώ δημιουργούμε την εσωτερική οδηγία που εμφανίζει το κείμενο "Inner" σε μια ετικέτα div.
  4. Στο πρότυπο για την εξωτερική οδηγία (βήμα # 4), καλούμε την εσωτερική οδηγία. Εδώ λοιπόν εισάγουμε το πρότυπο από την εσωτερική οδηγία στην εξωτερική οδηγία.
  5. Τέλος, ζητούμε άμεσα την εξωτερική οδηγία.

Εάν ο κωδικός εκτελεστεί με επιτυχία, η ακόλουθη έξοδος θα εμφανιστεί όταν εκτελείτε τον κωδικό σας στο πρόγραμμα περιήγησης.

Παραγωγή:

Από την έξοδο,

  • Μπορεί να φανεί ότι έχουν κληθεί τόσο οι εξωτερικές όσο και οι εσωτερικές οδηγίες και εμφανίζεται το κείμενο και στις δύο ετικέτες div.

Χειρισμός εκδηλώσεων σε μια οδηγία

Εκδηλώσεις όπως κλικ του ποντικιού ή κλικ στο κουμπί μπορούν να αντιμετωπιστούν από τις ίδιες τις οδηγίες. Αυτό γίνεται χρησιμοποιώντας τη λειτουργία σύνδεσης. Η λειτουργία συνδέσμου είναι αυτή που επιτρέπει στην οδηγία να προσκολληθεί στα στοιχεία DOM σε μια σελίδα HTML.

Σύνταξη:

Η σύνταξη του στοιχείου σύνδεσης είναι όπως φαίνεται παρακάτω

ng-επανάληψη

link: function ($scope, element, attrs)

Η συνάρτηση σύνδεσης δέχεται συνήθως 3 παραμέτρους, όπως το πεδίο εφαρμογής, το στοιχείο με το οποίο συσχετίζεται η οδηγία και τα χαρακτηριστικά του στοιχείου στόχου.

Ας δούμε ένα παράδειγμα για το πώς μπορούμε να το επιτύχουμε.

Event Registration

Guru99 Global Event

Click Me

Επεξήγηση κώδικα:

  1. Χρησιμοποιούμε τη λειτουργία συνδέσμου όπως ορίζεται σε γωνιακό για να δίνουμε τη δυνατότητα των οδηγιών να έχουν πρόσβαση σε συμβάντα στο HTML DOM.
  2. Χρησιμοποιούμε τη λέξη-κλειδί «στοιχείο» επειδή θέλουμε να ανταποκριθούμε σε ένα συμβάν για ένα στοιχείο HTML DOM, το οποίο είναι στην περίπτωσή μας θα είναι το στοιχείο «div». Στη συνέχεια, χρησιμοποιούμε τη συνάρτηση "bind" και λέμε ότι θέλουμε να προσθέσουμε προσαρμοσμένη λειτουργικότητα στο συμβάν κλικ του στοιχείου. Η λέξη «κλικ» είναι η λέξη-κλειδί, η οποία χρησιμοποιείται για να δηλώσει το συμβάν κλικ κάθε στοιχείου ελέγχου HTML. Για παράδειγμα, το κουμπί ελέγχου HTML έχει το συμβάν κλικ. Επειδή, στο παράδειγμά μας, θέλουμε να προσθέσουμε έναν προσαρμοσμένο κώδικα στο συμβάν κλικ της ετικέτας "dev", χρησιμοποιούμε τη λέξη-κλειδί "κλικ".
  3. Εδώ λέμε ότι θέλουμε να αντικαταστήσουμε το εσωτερικό HTML του στοιχείου (στην περίπτωσή μας το στοιχείο div) με το κείμενο «Με κάνατε κλικ!».
  4. Εδώ ορίζουμε την ετικέτα div για να χρησιμοποιήσουμε την προσαρμοσμένη οδηγία ng-guru.

Εάν ο κωδικός εκτελεστεί με επιτυχία, η ακόλουθη έξοδος θα εμφανιστεί όταν εκτελείτε τον κωδικό σας στο πρόγραμμα περιήγησης.

Παραγωγή:

  • Αρχικά το κείμενο "Click Me" θα εμφανίζεται στον χρήστη γιατί αυτό είναι που ορίστηκε αρχικά στην ετικέτα div. Όταν κάνετε πραγματικά κλικ στην ετικέτα div, θα εμφανιστεί η παρακάτω έξοδος

Περίληψη

  • Κάποιος μπορεί επίσης να δημιουργήσει μια προσαρμοσμένη οδηγία που μπορεί να χρησιμοποιηθεί για την έγχυση κώδικα στην κύρια γωνιακή εφαρμογή.
  • Μπορούν να γίνουν προσαρμοσμένες οδηγίες για την κλήση μελών που ορίζονται στο αντικείμενο πεδίου σε ένα συγκεκριμένο ελεγκτή χρησιμοποιώντας τις λέξεις-κλειδιά «Controller», «ControllAs» και «template».
  • Οι οδηγίες μπορούν επίσης να τοποθετηθούν για να παρέχουν ενσωματωμένη λειτουργικότητα που μπορεί να απαιτείται ανάλογα με την ανάγκη της εφαρμογής.
  • Οι οδηγίες μπορούν επίσης να καταστούν επαναχρησιμοποιήσιμες έτσι ώστε να μπορούν να χρησιμοποιηθούν για την έγχυση κοινού κώδικα που θα μπορούσε να απαιτείται σε διάφορες εφαρμογές ιστού.
  • Οδηγίες μπορούν επίσης να χρησιμοποιηθούν για τη δημιουργία προσαρμοσμένων ετικετών HTML που θα έχουν τη δική τους λειτουργικότητα καθορισμένη σύμφωνα με τις απαιτήσεις της επιχείρησης.
  • Οι εκδηλώσεις μπορούν επίσης να αντιμετωπιστούν από τις οδηγίες για τη διαχείριση συμβάντων DOM, όπως κλικ σε κουμπιά και ποντίκι.