AngularJS Directives
AngularJS vous permet d'étendre HTML avec de nouveaux attributs appelés Directives .
AngularJS dispose d'un ensemble de directives intégrées qui offrent des fonctionnalités à vos applications.
AngularJS vous permet également de définir vos propres directives.
AngularJS Directives
Les directives AngularJS sont des attributs HTML étendus avec le préfixe ng-
.
La ng-app
directive initialise une application AngularJS.
La ng-init
directive initialise les données d'application.
La ng-model
directive lie la valeur des contrôles HTML (input, select, textarea) aux données de l'application.
Découvrez toutes les directives AngularJS dans notre référence de directive AngularJS .
Exemple
<div ng-app="" ng-init="firstName='John'">
<p>Name: <input type="text" ng-model="firstName"></p>
<p>You wrote: {{ firstName }}</p>
</div>
La ng-app
directive indique également à AngularJS que l'élément <div> est le "propriétaire" de l'application AngularJS.
Liaison de données
L' {{ firstName }}
expression, dans l'exemple ci-dessus, est une expression de liaison de données AngularJS.
La liaison de données dans AngularJS lie les expressions AngularJS aux données AngularJS.
{{ firstName }}
est lié avec ng-model="firstName"
.
Dans l'exemple suivant, deux champs de texte sont liés avec deux directives ng-model :
Exemple
<div ng-app="" ng-init="quantity=1;price=5">
Quantity: <input type="number" ng-model="quantity">
Costs: <input type="number" ng-model="price">
Total in dollar: {{ quantity * price }}
</div>
L'utilisation ng-init
n'est pas très courante. Vous apprendrez comment initialiser les données dans le chapitre sur les contrôleurs.
Éléments HTML répétitifs
La ng-repeat
directive répète un élément HTML :
Exemple
<div ng-app="" ng-init="names=['Jani','Hege','Kai']">
<ul>
<li ng-repeat="x in names">
{{ x }}
</li>
</ul>
</div>
La ng-repeat
directive clone en fait les éléments HTML
une fois pour chaque élément d'une collection.
La ng-repeat
directive utilisée sur un tableau d'objets :
Exemple
<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]">
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
AngularJS est parfait pour les applications de base de données CRUD (Create Read Update Delete).
Imaginez si ces objets étaient des enregistrements d'une base de données.
La directive in-app
La ng-app
directive définit l' élément racine d'une application AngularJS.
La ng-app
directive démarrera automatiquement (initialisera automatiquement) l'application lorsqu'une page Web est chargée.
La directive chaleur
La ng-init
directive définit les valeurs initiales pour une application AngularJS.
Normalement, vous n'utiliserez pas ng-init. Vous utiliserez un contrôleur ou un module à la place.
Vous en apprendrez plus sur les contrôleurs et les modules plus tard.
La directive modélisation
La ng-model
directive lie la valeur des contrôles HTML (input, select, textarea) aux données de l'application.
La ng-model
directive peut également :
- Fournir une validation de type pour les données d'application (numéro, e-mail, requis).
- Fournir le statut des données d'application (invalide, sale, touché, erreur).
- Fournir des classes CSS pour les éléments HTML.
- Liez des éléments HTML à des formulaires HTML.
En savoir plus sur la ng-model
directive dans le chapitre suivant.
Créer de nouvelles directives
En plus de toutes les directives AngularJS intégrées, vous pouvez créer vos propres directives.
De nouvelles directives sont créées à l'aide de la .directive
fonction.
Pour invoquer la nouvelle directive, créez un élément HTML avec le même nom de balise que la nouvelle directive.
Lorsque vous nommez une directive, vous devez utiliser un nom en casse camel,
w3TestDirective
, mais lorsque vous l'invoquez, vous devez utiliser -
un nom séparé,w3-test-directive
:
Exemple
<body ng-app="myApp">
<w3-test-directive></w3-test-directive>
<script>
var app = angular.module("myApp", []);
app.directive("w3TestDirective",
function() {
return {
template : "<h1>Made by a directive!</h1>"
};
});
</script>
</body>
Vous pouvez invoquer une directive en utilisant :
- Nom de l'élément
- Attribut
- Classer
- Commenter
Les exemples ci-dessous produiront tous le même résultat :
Nom de l'élément
<w3-test-directive></w3-test-directive>
Attribut
<div w3-test-directive></div>
Classer
<div class="w3-test-directive"></div>
Commenter
<!-- directive: w3-test-directive -->
Restrictions
Vous pouvez limiter vos directives pour qu'elles ne soient invoquées que par certaines méthodes.
Exemple
En ajoutant une restrict
propriété avec la valeur "A"
, la directive ne peut être invoquée que par des attributs :
var app = angular.module("myApp", []);
app.directive("w3TestDirective",
function() {
return {
restrict : "A",
template : "<h1>Made by a directive!</h1>"
};
});
Les valeurs de restriction légales sont :
E
pour le nom de l'élémentA
pour l'attributC
pour la classeM
pour commentaire
Par défaut, la valeur est EA
, ce qui signifie que les noms d'éléments et les noms d'attributs peuvent invoquer la directive.