Qu'est-ce que la directive douanière?
Une directive personnalisée dans Angular Js est une directive définie par l'utilisateur avec la fonctionnalité souhaitée. Même si AngularJS a beaucoup de directives puissantes prêtes à l'emploi, des directives personnalisées sont parfois nécessaires.
Dans ce didacticiel, vous apprendrez-
- Comment créer une directive personnalisée?
- Directives et portées AngularJs
- Utilisation de contrôleurs avec des directives
- Comment créer des directives réutilisables
- Directives et composants AngularJS - ng-transclude
- Directives imbriquées
- Gestion des événements dans une directive
Comment créer une directive personnalisée?
Jetons un coup d'œil à un exemple de la façon dont nous pouvons créer une directive personnalisée.
La directive personnalisée dans notre cas va simplement injecter une balise div qui contient le texte "AngularJS Tutorial" dans notre page lorsque la directive est appelée.
Event Registration Guru99 Global Event
Explication du code:
- Nous créons d'abord un module pour notre application angulaire. Cela est nécessaire pour créer une directive personnalisée car la directive sera créée à l'aide de ce module.
- Nous créons maintenant une directive personnalisée appelée "ngGuru" et définissons une fonction qui aura un code personnalisé pour notre directive.
Noter:-
Notez que lors de la définition de la directive, nous l'avons définie comme ngGuru avec la lettre «G» en majuscule. Et quand nous y accédons depuis notre balise div en tant que directive, nous y accédons en tant que ng-guru. Voici comment angular comprend les directives personnalisées définies dans une application. Tout d'abord, le nom de la directive personnalisée doit commencer par les lettres «ng». Deuxièmement, le symbole du trait d'union «-» ne doit être mentionné que lors de l'appel de la directive. Et troisièmement, la première lettre suivant les lettres «ng» lors de la définition de la directive peut être soit en minuscule, soit en majuscule.
- Nous utilisons le paramètre de modèle qui est un paramètre défini par Angular pour les directives personnalisées. En cela, nous définissons que chaque fois que cette directive est utilisée, utilisez simplement la valeur du modèle et injectez-la dans le code appelant.
- Ici, nous utilisons maintenant notre directive "ng-guru" créée sur mesure. Lorsque nous faisons cela, la valeur que nous avons définie pour notre modèle "Angular JS Tutorial" sera maintenant injectée ici.
Si le code est exécuté avec succès, la sortie suivante s'affiche lorsque vous exécutez votre code dans le navigateur.
Production:
- La sortie ci-dessus montre clairement que notre directive ng-guru personnalisée, qui a le modèle défini pour afficher un texte personnalisé, s'affiche dans le navigateur.
Directives et portées AngularJs
La portée est définie comme la colle qui lie le contrôleur à la vue en gérant les données entre la vue et le contrôleur.
Lors de la création de directives AngularJs personnalisées, elles auront par défaut accès à l'objet scope dans le contrôleur parent.
De cette manière, il devient facile pour la directive personnalisée d'utiliser les données transmises au contrôleur principal.
Regardons un exemple de la façon dont nous pouvons utiliser la portée d'un contrôleur parent dans notre directive personnalisée.
Event Registration Guru99 Global Event
Explication du code:
- Nous créons d'abord un contrôleur appelé "DemoController". En cela, nous définissons une variable appelée tutorialName et l'attachons à l'objet scope dans une instruction - $ scope.tutorialName = "AngularJS".
- Dans notre directive personnalisée, nous pouvons appeler la variable "tutorialName" en utilisant une expression. Cette variable serait accessible car elle est définie dans le contrôleur "DemoController", qui deviendrait le parent de cette directive.
- Nous référençons le contrôleur dans une balise div, qui agira comme notre balise div parent. Notez que cela doit être fait en premier pour que notre directive personnalisée accède à la variable tutorialName.
- Nous attachons finalement simplement notre directive personnalisée "ng-guru" à notre balise div.
Si le code est exécuté avec succès, la sortie suivante s'affiche lorsque vous exécutez votre code dans le navigateur.
Production:
- La sortie ci-dessus montre clairement que notre directive personnalisée "ng-guru" utilise la variable d'étendue tutorialName dans le contrôleur parent.
Utilisation de contrôleurs avec des directives
Angular donne la possibilité d' accéder à la variable membre du contrôleur directement à partir de directives personnalisées sans avoir besoin de l'objet de portée.
Cela devient parfois nécessaire car dans une application, vous pouvez avoir plusieurs objets de portée appartenant à plusieurs contrôleurs.
Il y a donc de fortes chances que vous fassiez l'erreur d'accéder à l'objet scope du mauvais contrôleur.
Dans de tels scénarios, il existe un moyen de mentionner spécifiquement le fait de dire "Je veux accéder à ce contrôleur spécifique" à partir de ma directive.
Jetons un coup d'œil à un exemple de la façon dont nous pouvons y parvenir.
Event Registration Guru99 Global Event
Explication du code:
- Nous créons d'abord un contrôleur appelé "DemoController". En cela, nous définirons une variable appelée "tutorialName" et cette fois au lieu de l'attacher à l'objet scope, nous l'attacherons directement au contrôleur.
- Dans notre directive personnalisée, nous mentionnons spécifiquement que nous voulons utiliser le contrôleur "DemoController" en utilisant le mot-clé de paramètre de contrôleur.
- Nous créons une référence au contrôleur à l'aide du paramètre "controllerAs". Ceci est défini par Angular et constitue le moyen de référencer le contrôleur en tant que référence.
Remarque: - Il est possible d'accéder à plusieurs contrôleurs dans une directive en spécifiant les blocs respectifs des instructions contrôleur, controllerAs et modèle.
- Enfin, dans notre modèle, nous utilisons la référence créée à l'étape 3 et la variable membre qui a été attachée directement au contrôleur à l'étape 1.
Si le code est exécuté avec succès, la sortie suivante s'affiche lorsque vous exécutez votre code dans le navigateur.
Production:
La sortie montre clairement que la directive personnalisée accède en particulier au DemoController et à la variable membre tutorialName qui lui est attachée et affiche le texte "Angular".
Comment créer des directives réutilisables
Nous avons déjà vu la puissance des directives personnalisées, mais nous pouvons passer au niveau supérieur en créant nos propres directives réutilisables.
Disons, par exemple, que nous voulions injecter du code qui afficherait toujours les balises HTML ci-dessous sur plusieurs écrans, qui est essentiellement juste une entrée pour le «nom» et «l'âge» de l'utilisateur.
Pour réutiliser cette fonction sur plusieurs écrans sans codage à chaque fois, nous créons un contrôle maître ou une directive en angulaire pour tenir ces contrôles ("Nom" et "âge" de l'utilisateur).
Alors maintenant, au lieu de saisir le même code pour l'écran ci-dessous à chaque fois, nous pouvons en fait intégrer ce code dans une directive et intégrer cette directive à tout moment.
Voyons un exemple de la façon dont nous pouvons y parvenir.
Event Registration Guru99 Global Event
Explication du code:
- Dans notre extrait de code pour une directive personnalisée, ce qui change est juste la valeur qui est donnée au paramètre de modèle de notre directive personnalisée.
Au lieu d'une balise ou d'un texte plan cinq, nous entrons en fait le fragment entier de 2 contrôles d'entrée pour le "Nom" et "l'âge" qui doit être affiché sur notre page.
Si le code est exécuté avec succès, la sortie suivante s'affiche lorsque vous exécutez votre code dans le navigateur.
Production:
À partir de la sortie ci-dessus, nous pouvons voir que l'extrait de code du modèle de la directive personnalisée est ajouté à la page.
Directives et composants AngularJS - ng-transclude
Comme nous l'avons mentionné plus tôt, Angular est destiné à étendre les fonctionnalités du HTML. Et nous avons déjà vu comment nous pouvons avoir une injection de code en utilisant des directives réutilisables personnalisées.
Mais dans le développement d'applications Web modernes, il existe également un concept de développement de composants Web. Ce qui signifie essentiellement créer nos propres balises HTML qui peuvent être utilisées comme composants dans notre code.
Par conséquent, angular fournit un autre niveau de puissance pour étendre les balises HTML en donnant la possibilité d'injecter des attributs dans les balises HTML elles-mêmes.
Ceci est fait par la balise " ng-transclude ", qui est une sorte de paramètre pour dire à angular de capturer tout ce qui est placé à l'intérieur de la directive dans le balisage.
Prenons un exemple de la façon dont nous pouvons y parvenir.
Event Registration Guru99 Global Event
Angular JS
Explication du code:
- Nous utilisons la directive pour définir une balise HTML personnalisée appelée «pane» et ajouter une fonction qui mettra du code personnalisé pour cette balise. Dans la sortie, notre balise de volet personnalisé va afficher le texte "AngularJS" dans un rectangle avec une bordure noire unie.
- L'attribut "transclude" doit être mentionné comme vrai, ce qui est requis par angular pour injecter cette balise dans notre DOM.
- Dans la portée, nous définissons un attribut title. Les attributs sont normalement définis comme des paires nom / valeur comme: name = "value". Dans notre cas, le nom de l'attribut dans notre balise HTML de volet est "title". Le symbole "@" est l'exigence d'angulaire. Ceci est fait pour que lorsque la ligne title = {{title}} est exécutée à l'étape 5, le code personnalisé de l'attribut title soit ajouté à la balise HTML du volet.
- Le code personnalisé pour les attributs de titre qui dessine simplement une bordure noire solide pour notre contrôle.
- Enfin, nous appelons notre balise HTML personnalisée avec l'attribut title qui a été défini.
Si le code est exécuté avec succès, la sortie suivante s'affiche lorsque vous exécutez votre code dans le navigateur.
Production:
- La sortie montre clairement que l'attribut title de la balise html5 du volet a été défini sur la valeur personnalisée "Angular.JS".
Directives imbriquées
Les directives angulaires peuvent être imbriquées. Comme pour les modules ou fonctions internes de n'importe quel langage de programmation, vous devrez peut-être intégrer des directives les unes dans les autres.
Vous pouvez mieux comprendre cela en consultant l'exemple ci-dessous.
Dans cet exemple, nous créons 2 directives appelées «externe» et «interne».
- La directive interne affiche un texte appelé "Inner".
- Alors que la directive externe fait en fait un appel à la directive interne pour afficher le texte appelé "Inner".
Guru99 Global Event