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 blur
debounce
: 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 second
allowInvalid
: 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-model
doit ê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 ladate
ou de l'time
. les types
ngCloak
La directive
ngCloak
est 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!