AngularJS
Directives intégrées
Recherche…
Expressions angulaires - Texte vs Nombre
Cet exemple montre comment les expressions angulaires sont évaluées lors de l'utilisation de type="text" et de type="number" pour l'élément d'entrée. Considérez le contrôleur suivant et visualisez:
Manette
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
Vue
<div ng-app="app" ng-controller="ctrl">
<input type="text" ng-model="textInput.value">
{{ textInput.value + 5 }}
<input type="number" ng-model="numberInput.value">
{{ numberInput.value + 5 }}
</div>
- Lorsque vous utilisez
+dans une expression liée à une entrée de texte , l'opérateur concaténera les chaînes (premier exemple), affichant 55 sur l'écran*. - Lorsque vous utilisez
+dans une expression liée à la saisie d'un numéro , l'opérateur retourne la somme des nombres (deuxième exemple), affichant 10 sur l'écran*.
* - Jusqu'à ce que l'utilisateur modifie la valeur dans le champ de saisie, l'affichage changera ensuite en conséquence.
ngRépéter
ng-repeat est une directive intégrée dans Angular qui vous permet d'itérer un tableau ou un objet et vous permet de répéter un élément une fois pour chaque élément de la collection.
ng-repeat un tableau
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
Où:
item = article individuel dans la collection
itemCollection = Le tableau que vous itérez
ng-repeter un objet
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
Où:
key = le nom de la propriété
valeur = la valeur de la propriété
myObject = l'objet que vous itérez
filtrer votre ng-repeat par entrée utilisateur
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
Où:
searchText = le texte que l'utilisateur souhaite filtrer par liste
stringArray = un tableau de chaînes, par exemple ['string', 'array']
Vous pouvez également afficher ou référencer les éléments filtrés ailleurs en attribuant un alias avec as aliasName , comme ceci:
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText as filteredStrings">
{{string}}
</li>
</ul>
<p>There are {{filteredStrings.length}} matching results</p>
ng-repeat-start et ng-repeat-end
Pour répéter plusieurs éléments DOM en définissant un point de départ et un point de fin, vous pouvez utiliser les directives ng-repeat-start et ng-repeat-end .
<ul>
<li ng-repeat-start="item in [{a: 1, b: 2}, {a: 3, b:4}]">
{{item.a}}
</li>
<li ng-repeat-end>
{{item.b}}
</li>
</ul>
Sortie:
- 1
- 2
- 3
- 4
Il est important de toujours fermer ng-repeat-start avec ng-repeat-end .
Les variables
ng-repeat expose également ces variables à l'intérieur de l'expression
| Variable | Type | Détails |
|---|---|---|
$index | Nombre | Égal à l'index de l'itération courante ($ index === 0 sera évalué à true au premier élément itéré; voir d' $first ) |
$first | Booléen | Évalue à true au premier élément itéré |
$last | Booléen | Évalue à true au dernier élément itéré |
$middle | Booléen | Évalue à true si l'élément se situe entre $first et $last |
$even | Booléen | Évalué à true à une itération paire (équivalent à $index%2===0 ) |
$odd | Booléen | Évalué à true à une itération impaire (équivalent à $index%2===1 ) |
Considérations de performance
Rendu ngRepeat peut devenir lent, en particulier lors de l'utilisation de grandes collections.
Si les objets de la collection ont une propriété d'identifiant, vous devez toujours track by l'identificateur plutôt que l'objet entier, qui est la fonctionnalité par défaut. Si aucun identifiant n'est présent, vous pouvez toujours utiliser l' $index intégré.
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
Portée de ngRepeat
ngRepeat crée toujours une étendue enfant isolée, il faut donc faire attention si la portée parent doit être accessible à l'intérieur de la répétition.
Voici un exemple simple montrant comment définir une valeur dans votre portée parent à partir d'un événement click à l'intérieur de ngRepeat .
scope val: {{val}}<br/>
ctrlAs val: {{ctrl.val}}
<ul>
<li ng-repeat="item in itemCollection">
<a href="#" ng-click="$parent.val=item.value; ctrl.val=item.value;">
{{item.label}} {{item.value}}
</a>
</li>
</ul>
$scope.val = 0;
this.val = 0;
$scope.itemCollection = [{
id: 0,
value: 4.99,
label: 'Football'
},
{
id: 1,
value: 6.99,
label: 'Baseball'
},
{
id: 2,
value: 9.99,
label: 'Basketball'
}];
S'il n'y avait que val = item.value à ng-click il ne val = item.value pas à jour le val dans l'étendue parent en raison de l'étendue isolée. C'est pourquoi la portée parent est accessible avec $parent référence $parent ou avec la syntaxe controllerAs (par exemple ng-controller="mainController as ctrl" ).
Imbriqué ng-repeat
Vous pouvez également utiliser ng-repeat imbriqué.
<div ng-repeat="values in test">
<div ng-repeat="i in values">
[{{$parent.$index}},{{$index}}] {{i}}
</div>
</div>
var app = angular.module("myApp", []);
app.controller("ctrl", function($scope) {
$scope.test = [
['a', 'b', 'c'],
['d', 'e', 'f']
];
});
Ici, pour accéder à l'index du parent ng-repeat à l'intérieur de child ng-repeat, vous pouvez utiliser $parent.$index .
ngShow et ngHide
La directive ng-show affiche ou masque l'élément HTML basé sur si l'expression qui lui est transmise est vraie ou fausse. Si la valeur de l'expression est falsifiée, elle se cachera. Si c'est véridique alors ça montrera.
La directive ng-hide est similaire. Cependant, si la valeur est falsifiée, elle affichera l'élément HTML. Lorsque l'expression est véridique, elle le cachera.
Contrôleur :
var app = angular.module('app', []);
angular.module('app')
.controller('ExampleController', ExampleController);
function ExampleController() {
var vm = this;
//Binding the username to HTML element
vm.username = '';
//A taken username
vm.taken_username = 'StackOverflow';
}
Vue
<section ng-controller="ExampleController as main">
<p>Enter Password</p>
<input ng-model="main.username" type="text">
<hr>
<!-- Will always show as long as StackOverflow is not typed in -->
<!-- The expression is always true when it is not StackOverflow -->
<div style="color:green;" ng-show="main.username != main.taken_username">
Your username is free to use!
</div>
<!-- Will only show when StackOverflow is typed in -->
<!-- The expression value becomes falsy -->
<div style="color:red;" ng-hide="main.username != main.taken_username">
Your username is taken!
</div>
<p>Enter 'StackOverflow' in username field to show ngHide directive.</p>
</section>
ngOptions
ngOptions est une directive qui simplifie la création d'une liste déroulante HTML pour la sélection d'un élément à partir d'un tableau qui sera stocké dans un modèle. L'attribut ngOptions est utilisé pour générer dynamiquement une liste d'éléments <option> pour l'élément <select> utilisant le tableau ou l'objet obtenu en évaluant l'expression de compréhension ngOptions.
Avec ng-options le balisage peut être réduit à une balise select et la directive crée la même sélection:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
Il y a une autre façon de créer select options select en utilisant ng-repeat , mais il n'est pas recommandé d'utiliser ng-repeat car il est principalement utilisé pour des usages généraux, comme forEach juste pour faire une boucle. Alors que ng-options est spécifiquement conçu pour créer select options de balises select .
L’exemple ci-dessus utilisant ng-repeat serait
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
Voyons l'exemple ci-dessus en détail également avec quelques variations.
Modèle de données pour l'exemple:
$scope.fruit = [
{ label: "Apples", value: 4, id: 2 },
{ label: "Oranges", value: 2, id: 1 },
{ label: "Limes", value: 4, id: 4 },
{ label: "Lemons", value: 5, id: 3 }
];
<!-- label for value in array -->
<select ng-options="f.label for f in fruit" ng-model="selectedFruit"></select>
Balise d'option générée lors de la sélection:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Effets:
f.label sera l'étiquette de l' <option> et la valeur contiendra l'objet entier.
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
Balise d'option générée lors de la sélection:
<option value="4"> Apples </option>
Effets:
f.value (4) sera la valeur dans ce cas, alors que l'étiquette est toujours la même.
<!-- label group by group for value in array -->
<select ng-options="f.label group by f.value for f in fruit" ng-model="selectedFruit"></select>
Balise d'option générée lors de la sélection:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Effets:
Les options seront regroupées en fonction de leur value . Les options avec la même value tomberont dans une catégorie
<!-- label disable when disable for value in array -->
<select ng-options="f.label disable when f.value == 4 for f in fruit" ng-model="selectedFruit"></select>
Balise d'option générée lors de la sélection:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Effets:
"Pommes" et "Limes" seront désactivés (impossible à sélectionner) à cause de la condition disable when f.value==4 . Toutes les options avec la value=4 seront désactivées
<!-- label group by group for value in array track by trackexpr -->
<select ng-options="f.value as f.label group by f.value for f in fruit track by f.id" ng-model="selectedFruit"></select>
Balise d'option générée lors de la sélection:
<option value="4"> Apples </option>
Effets:
Il n’ya pas de changement visuel lors de l’utilisation de trackBy , mais Angular détectera les modifications par l’ id au lieu de par référence, ce qui est toujours une meilleure solution.
<!-- label for value in array | orderBy:orderexpr track by trackexpr -->
<select ng-options="f.label for f in fruit | orderBy:'id' track by f.id" ng-model="selectedFruit"></select>
Balise d'option générée lors de la sélection:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Effets:
orderBy est un filtre standard AngularJS qui organise les options par ordre croissant (par défaut), afin que "Oranges" apparaisse en premier puisque son id = 1.
Tous les <select> avec les ng-options ng-model doivent avoir ng-model attaché.
ngModèle
Avec ng-model, vous pouvez associer une variable à n'importe quel type de champ de saisie. Vous pouvez afficher la variable en utilisant des accolades doubles, par exemple {{myAge}} .
<input type="text" ng-model="myName">
<p>{{myName}}</p>
Au fur et à mesure que vous tapez dans le champ de saisie ou que vous le modifiez de quelque manière que ce soit, vous verrez instantanément la valeur dans le paragraphe mise à jour.
La variable ng-model, dans cet exemple, sera disponible dans votre contrôleur en tant que $scope.myName . Si vous utilisez la syntaxe controllerAs :
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
Vous devrez vous référer à la portée du contrôleur en pré-attendant l'alias du contrôleur défini dans l'attribut ng-controller à la variable ng-model. De cette façon, vous n'aurez pas besoin d'injecter $scope dans votre contrôleur pour référencer votre variable ng-model, la variable sera disponible sous la forme this.myName dans la fonction de votre contrôleur.
ngClass
Supposons que vous deviez afficher le statut d'un utilisateur et que vous ayez plusieurs classes CSS possibles. Angular permet de choisir facilement parmi une liste de plusieurs classes possibles qui vous permettent de spécifier une liste d'objets incluant des conditions. Angular est capable d'utiliser la classe correcte en fonction de la véracité des conditions.
Votre objet doit contenir des paires clé / valeur. La clé est un nom de classe qui sera appliqué lorsque la valeur (conditionnelle) est évaluée à true.
<style>
.active { background-color: green; color: white; }
.inactive { background-color: gray; color: white; }
.adminUser { font-weight: bold; color: yellow; }
.regularUser { color: white; }
</style>
<span ng-class="{
active: user.active,
inactive: !user.active,
adminUser: user.level === 1,
regularUser: user.level === 2
}">John Smith</span>
Angular vérifiera l'objet $scope.user pour voir le statut active et le numéro de level . Selon les valeurs de ces variables, Angular appliquera le style correspondant au <span> .
ngIf
ng-if est une directive similaire à ng-show mais insère ou supprime l'élément du DOM au lieu de le cacher simplement. Angular 1.1.5 introduit la directive ng-If. Vous pouvez utiliser la directive ng-if au-dessus des versions 1.1.5. Ceci est utile car Angular ne traitera pas les digests pour les éléments à l'intérieur d'un ng-if supprimé, ng-if réduit la charge de travail d'Angular, en particulier pour les liaisons de données complexes.
Contrairement à ng-show , la directive ng-if crée une étendue enfant qui utilise l'héritage prototype. Cela signifie que la définition d'une valeur primitive sur la portée enfant ne s'appliquera pas au parent. Pour définir une primitive sur la portée $parent propriété $parent de la portée enfant doit être utilisée.
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
Vue
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
DOM si currentUser n'est pas currentUser
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
DOM si currentUser est currentUser
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
Promesse de fonction
La directive ngIf accepte également les fonctions, qui exigent logiquement de renvoyer true ou false.
<div ng-if="myFunction()">
<span>Span text</span>
</div>
Le texte span apparaîtra uniquement si la fonction renvoie true.
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Comme toute expression angulaire, la fonction accepte tout type de variable.
ngMouseenter et ngMouseleave
Les directives ng-mouseenter et ng-mouseleave sont utiles pour exécuter des événements et appliquer un style CSS lorsque vous passez ou sortez de vos éléments DOM.
La directive ng-mouseenter exécute une expression dont un événement d'entrée de souris (lorsque l'utilisateur entre son pointeur de souris sur l'élément DOM dans lequel réside cette directive)
HTML
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
Dans l'exemple ci-dessus, lorsque l'utilisateur pointe son curseur sur le div , applyStyle devient true , ce qui applique la classe CSS .active à la ng-class .
La directive ng-mouseleave exécute une expression un événement de sortie de la souris (lorsque l'utilisateur éloigne le curseur de la souris de l'élément DOM dans lequel réside cette directive)
HTML
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
En réutilisant le premier exemple, maintenant, lorsque l'utilisateur prend le pointeur de la souris en dehors du div, la classe .active est supprimée.
ngDisabled
Cette directive est utile pour limiter les événements d'entrée en fonction de certaines conditions existantes.
La directive ng-disabled accepte et exprime une valeur qui doit correspondre à une valeur véridique ou à une valeur falsifiée.
ng-disabled est utilisé pour appliquer conditionnellement l'attribut disabled sur un élément d' input .
HTML
<input type="text" ng-model="vm.name">
<button ng-disabled="vm.name.length===0" ng-click="vm.submitMe">Submit</button>
vm.name.length===0 est évalué à true si la longueur de l' input est 0, ce qui désactive le bouton, empêchant l'utilisateur de déclencher l'événement click de ng-click
ngDblclick
La directive ng-dblclick est utile lorsque vous souhaitez ng-dblclick un événement de double-clic à vos éléments DOM.
Cette directive accepte une expression
HTML
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
Dans l'exemple ci-dessus, la valeur conservée à l' input sera incrémentée lorsque vous double-cliquerez sur le bouton.
Directives intégrées Cheat Sheet
ng-app Définit la section AngularJS.
ng-init Définit une valeur de variable par défaut.
ng-bind Alternative au modèle {{}}.
ng-bind-template Lie plusieurs expressions à la vue.
ng-non-bindable États que les données ne peuvent pas être liées.
ng-bind-html Lie la propriété HTML interne d'un élément HTML.
ng-change Evalue l'expression spécifiée lorsque l'utilisateur modifie l'entrée.
ng-checked Définit la case à cocher.
ng-class Définit la classe css dynamiquement.
ng-cloak Empêche l'affichage du contenu jusqu'à ce qu'AngularJS prenne le contrôle.
ng-click Exécute une méthode ou une expression lorsque l'utilisateur clique ng-click un élément.
ng-controller Associe une classe de contrôleur à la vue.
ng-disabled Contrôle la propriété désactivée de l'élément de formulaire
ng-form Définit un formulaire
ng-href dynamiquement les variables AngularJS à l'attribut href.
ng-include Utilisé pour récupérer, compiler et inclure un fragment HTML externe sur votre page.
ng-if Supprime ou recrée un élément dans le DOM en fonction d'une expression
ng-switch Commande de ng-switch conditionnelle en fonction de l'expression correspondante.
ng-model Lie les éléments input, select, textarea etc avec la propriété model.
ng-readonly Utilisé pour définir l'attribut readonly sur un élément.
ng-repeat Permet de parcourir chaque élément d'une collection pour créer un nouveau modèle.
ng-selected Utilisé pour définir l'option sélectionnée dans l'élément.
ng-show/ng-hide Affiche / ng-show/ng-hide éléments en fonction d'une expression.
ng-src Liez dynamiquement les variables AngularJS à l'attribut src.
ng-submit Bind angular expressions pour soumettre des événements.
ng-value Lier les expressions angulaires à la valeur de.
ng-required Lier les expressions angulaires aux événements de soumission.
ng-style Définit le ng-style CSS sur un élément HTML.
ng-pattern Ajoute le validateur de modèle à ngModel.
ng-maxlength Ajoute le validateur maxlength à ngModel.
ng-minlength Ajoute le validateur de minlength à ngModel.
ng-classeven Fonctionne conjointement avec ngRepeat et ne prend effet que sur les lignes impaires (paires).
ng-classodd Fonctionne conjointement avec ngRepeat et ne prend effet que sur les lignes impaires (paires).
ng-cut Permet de spécifier un comportement personnalisé pour un événement coupé.
ng-copy Utilisé pour spécifier le comportement personnalisé lors d'un événement de copie.
ng-paste Utilisé pour spécifier un comportement personnalisé sur un événement de collage.
ng-options Utilisé pour générer dynamiquement une liste d'éléments pour l'élément.
ng-list Permet de convertir une chaîne en liste en fonction du délimiteur spécifié.
ng-open Utilisé pour définir l'attribut open sur l'élément, si l'expression à l'intérieur de ngOpen est dans la vérité.
ngClick
La directive ng-click associe un événement click à un élément DOM.
La directive ng-click vous permet de spécifier un comportement personnalisé lorsqu'un élément de DOM est cliqué.
Il est utile lorsque vous souhaitez joindre des événements de clic sur les boutons et les gérer sur votre contrôleur.
Cette directive accepte une expression avec l'objet événement disponible en tant que $event
HTML
<input ng-click="onClick($event)">Click me</input>
Manette
.controller("ctrl", function($scope) {
$scope.onClick = function(evt) {
console.debug("Hello click event: %o ",evt);
}
})
HTML
<button ng-click="count = count + 1" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
HTML
<button ng-click="count()" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
Manette
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
Lorsque l'utilisateur clique sur le bouton, un appel de la fonction onClick "Hello click event" suivi de l'objet événement.
ngRequired
Le ng-required ajoute ou supprime l' required attribut de validation sur un élément, qui à son tour activer et désactiver le require clé de validation pour l' input .
Il est utilisé pour définir éventuellement si un élément d' input doit avoir une valeur non vide. La directive est utile lors de la conception de la validation sur des formulaires HTML complexes.
HTML
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
ng-model-options
ng-model-options permet de modifier le comportement par défaut de ng-model , cette directive permet d'enregistrer des événements qui se déclencheront lorsque le modèle ng sera mis à jour et d'attacher un effet de rebond.
Cette directive accepte une expression qui évaluera un objet de définition ou une référence à une valeur de portée.
Exemple:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
L'exemple ci-dessus associera un effet myValue rebond de 500 millisecondes sur myValue , ce qui entraînera la mise à jour du modèle 500 ms après que l'utilisateur aura fini de taper sur l' input (c'est-à-dire lorsque la mise à jour de myValue terminée).
Propriétés d'objet disponibles
updateOn: spécifie quel événement doit être lié à l'entréeng-model-options="{ updateOn: 'blur'}" // will update on blurdebounce: spécifie un délai de quelques millisecondes vers la mise à jour du modèleng-model-options="{'debounce': 500}" // will update the model after 1/2 secondallowInvalid: un indicateur booléen autorisant une valeur non valide pour le modèle, contournant la validation de formulaire par défaut, ces valeurs seraient par défaut traitées commeundefined.getterSetter: un indicateur booléen indiquant si leng-modeldoit être traité comme une fonction getter / setter au lieu d'une valeur de modèle simple. La fonction va alors exécuter et renvoyer la valeur du modèle.Exemple:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}timezone: définit le fuseau horaire du modèle si l'entrée est de ladateou de l'time. les types
ngCloak
La directive
ngCloakest utilisée pour empêcher que le modèle HTML angulaire ne soit brièvement affiché par le navigateur dans sa forme brute (non compilée) pendant le chargement de votre application. - Voir la source
HTML
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak peut être appliqué à l'élément body, mais l'utilisation privilégiée consiste à appliquer plusieurs directives ngCloak à de petites parties de la page pour permettre un rendu progressif de la vue du navigateur.
La directive ngCloak n'a pas de paramètres.
Voir aussi: Prévention du scintillement
ngInclude
ng-include vous permet de déléguer le contrôle d'une partie de la page à un contrôleur spécifique. Vous pouvez le faire car la complexité de ce composant devient telle que vous souhaitez encapsuler toute la logique dans un contrôleur dédié.
Un exemple est:
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
Notez que le /gridview devra être servi par le serveur Web comme une URL distincte et légitime.
Notez également que l'attribut src accepte une expression angulaire. Cela pourrait être une variable ou un appel de fonction par exemple ou, comme dans cet exemple, une constante de chaîne. Dans ce cas, vous devez vous assurer d’ emballer l’URL source entre guillemets , afin qu’elle soit évaluée comme une constante de chaîne. C'est une source commune de confusion.
Dans le /gridview html, vous pouvez faire référence au gridController comme s’il était enroulé autour de la page, par exemple:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
Utiliser le balisage angulaire comme {{hash}} dans un attribut src ne fonctionne pas correctement. Le navigateur ira chercher l'URL avec le texte littéral {{hash}} jusqu'à ce que Angular remplace l'expression à l'intérieur de {{hash}} . ng-src directive ng-src remplace l'attribut src origine de l'élément tag image et résout le problème
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPattern
La directive ng-pattern accepte une expression qui évalue un modèle d'expression régulière et utilise ce modèle pour valider une entrée textuelle.
Exemple:
Disons que nous voulons qu'un élément <input> devienne valide lorsque sa valeur (ng-model) est une adresse IP valide.
Modèle:
<input type="text" ng-model="ipAddr" ng-pattern="ipRegex" name="ip" required>
Manette:
$scope.ipRegex = /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/;
ngValue
Généralement utilisé sous ng-repeat ngValue est utile lors de la génération dynamique de listes de boutons radio à l'aide de ngRepeat
<script>
angular.module('valueExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.names = ['pizza', 'unicorns', 'robots'];
$scope.my = { favorite: 'unicorns' };
}]);
</script>
<form ng-controller="ExampleController">
<h2>Which is your favorite?</h2>
<label ng-repeat="name in names" for="{{name}}">
{{name}}
<input type="radio"
ng-model="my.favorite"
ng-value="name"
id="{{name}}"
name="favorite">
</label>
<div>You chose {{my.favorite}}</div>
</form>
ngCopy
La directive ngCopy spécifie le comportement à exécuter sur un événement de copie.
Empêcher un utilisateur de copier des données
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
Dans le contrôleur
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ngPaste
La directive ngPaste spécifie un comportement personnalisé à exécuter lorsqu'un utilisateur colle du contenu
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
ngHref est utilisé à la place de l'attribut href, si nous avons des expressions angulaires à l'intérieur de la valeur href. La directive ngHref remplace l'attribut href d'origine d'une balise html en utilisant l'attribut href tel que tag, tag etc.
La directive ngHref s'assure que le lien n'est pas rompu même si l'utilisateur clique sur le lien avant qu'AngularJS n'ait évalué le code.
Exemple 1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
Exemple 2 Cet exemple extrait dynamiquement la valeur href de la zone de saisie et la charge en tant que valeur href.
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
Exemple 3
<script>
angular.module('angularDoc', [])
.controller('myController', function($scope) {
// Set some scope value.
// Here we set bootstrap version.
$scope.bootstrap_version = '3.3.7';
// Set the default layout value
$scope.layout = 'normal';
});
</script>
<!-- Insert it into Angular Code -->
<link rel="stylesheet" ng-href="//maxcdn.bootstrapcdn.com/bootstrap/{{ bootstrap_version }}/css/bootstrap.min.css">
<link rel="stylesheet" ng-href="layout-{{ layout }}.css">
ngList
La directive ng-list est utilisée pour convertir une chaîne délimitée depuis une entrée de texte vers un tableau de chaînes ou inversement.
La directive ng-list utilise un délimiteur par défaut de ", " (espace virgule).
Vous pouvez définir le délimiteur manuellement en assignant à ng-list un délimiteur tel que ng-list="; " .
Dans ce cas, le délimiteur est défini sur un point-virgule suivi d'un espace.
Par défaut, ng-list a un attribut ng-trim qui est défini sur true. ng-trim quand faux, respectera l'espace blanc dans votre délimiteur. Par défaut, ng-list ne prend pas en compte les espaces blancs, sauf si vous définissez ng-trim="false" .
Exemple:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
Un délimiteur de client est configuré pour être ; . Et le modèle de la zone de saisie est défini sur le tableau créé dans la portée.
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
La zone de saisie affiche le contenu: angular; is; cool!