Filtres AngularJS
Des filtres peuvent être ajoutés dans AngularJS pour formater les données.
Filtres AngularJS
AngularJS fournit des filtres pour transformer les données :
currency
Formater un nombre au format monétaire.date
Mettre en forme une date dans un format spécifié.filter
Sélectionnez un sous-ensemble d'éléments dans un tableau.json
Formater un objet en une chaîne JSON.limitTo
Limite un tableau/chaîne à un nombre spécifié d'éléments/caractères.lowercase
Formater une chaîne en minuscules.number
Formater un nombre en une chaîne.orderBy
Ordonne un tableau par une expression.uppercase
Formater une chaîne en majuscules.
Ajout de filtres aux expressions
Des filtres peuvent être ajoutés aux expressions en utilisant le caractère pipe |
, suivi d'un filtre.
Les uppercase
chaînes de format de filtre en majuscule :
Exemple
<div ng-app="myApp" ng-controller="personCtrl">
<p>The name is {{ lastName | uppercase }}</p>
</div>
Les lowercase
chaînes de format de filtre en minuscules :
Exemple
<div ng-app="myApp" ng-controller="personCtrl">
<p>The name is {{ lastName | lowercase }}</p>
</div>
Ajout de filtres aux directives
Des filtres sont ajoutés aux directives, comme ng-repeat
, en utilisant le caractère pipe
|
, suivi d'un filtre :
Exemple
Le orderBy
filtre trie un tableau :
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names | orderBy:'country'">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
Le filtre de devise
Le currency
filtre formate un nombre comme devise :
Exemple
<div ng-app="myApp" ng-controller="costCtrl">
<h1>Price: {{ price | currency }}</h1>
</div>
En savoir plus sur le filtre de devise dans notre référence de filtre de devise AngularJS
Le filtre Filtre
Le filter
filtre sélectionne un sous-ensemble d'un tableau.
Le filter
filtre ne peut être utilisé que sur des tableaux et renvoie un tableau contenant uniquement les éléments correspondants.
Exemple
Renvoie les noms contenant la lettre "i":
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names |
filter : 'i'">
{{ x }}
</li>
</ul>
</div>
En savoir plus sur le filtre filter dans notre référence de filtre de filtre AngularJS
Filtrer un tableau en fonction de l'entrée de l'utilisateur
En définissant la ng-model
directive sur un champ d'entrée, nous pouvons utiliser la valeur du champ d'entrée comme expression dans un filtre.
Tapez une lettre dans le champ de saisie et la liste se rétrécira/s'agrandira en fonction de la correspondance :
- Jani
- Carl
- Margareth
- Hégé
- Jo
- Gustave
- Birgit
- Marie
- Kaï
Exemple
<div ng-app="myApp" ng-controller="namesCtrl">
<p><input type="text" ng-model="test"></p>
<ul>
<li ng-repeat="x in names | filter : test">
{{ x }}
</li>
</ul>
</div>
Trier un tableau en fonction de l'entrée de l'utilisateur
Cliquez sur les en-têtes de tableau pour modifier l'ordre de tri ::
Nom | Pays |
---|---|
Jani | Norvège |
Carl | la Suède |
Margareth | Angleterre |
Hégé | Norvège |
Jo | Danemark |
Gustave | la Suède |
Birgit | Danemark |
Marie | Angleterre |
Kaï | Norvège |
En ajoutant la ng-click
directive sur les en-têtes de table, nous pouvons exécuter une fonction qui modifie l'ordre de tri du tableau :
Exemple
<div ng-app="myApp" ng-controller="namesCtrl">
<table border="1" width="100%">
<tr>
<th ng-click="orderByMe('name')">Name</th>
<th ng-click="orderByMe('country')">Country</th>
</tr>
<tr
ng-repeat="x in names | orderBy:myOrderBy">
<td>{{x.name}}</td>
<td>{{x.country}}</td>
</tr>
</table>
</div>
<script>
angular.module('myApp', []).controller('namesCtrl',
function($scope) {
$scope.names = [
{name:'Jani',country:'Norway'},
{name:'Carl',country:'Sweden'},
{name:'Margareth',country:'England'},
{name:'Hege',country:'Norway'},
{name:'Joe',country:'Denmark'},
{name:'Gustav',country:'Sweden'},
{name:'Birgit',country:'Denmark'},
{name:'Mary',country:'England'},
{name:'Kai',country:'Norway'}
];
$scope.orderByMe = function(x) {
$scope.myOrderBy
= x;
}
});
</script>
Filtres personnalisés
Vous pouvez créer vos propres filtres en enregistrant une nouvelle fonction de fabrique de filtres avec votre module :
Exemple
Créez un filtre personnalisé appelé "myFormat":
<ul ng-app="myApp" ng-controller="namesCtrl">
<li ng-repeat="x
in names">
{{x |
myFormat}}
</li>
</ul>
<script>
var app =
angular.module('myApp', []);
app.filter('myFormat',
function() {
return function(x) {
var i, c, txt = "";
for (i = 0; i <
x.length; i++) {
c = x[i];
if (i % 2 == 0) {
c = c.toUpperCase();
}
txt
+= c;
}
return txt;
};
});
app.controller('namesCtrl', function($scope)
{
$scope.names = ['Jani', 'Carl', 'Margareth', 'Hege',
'Joe', 'Gustav', 'Birgit', 'Mary', 'Kai'];
});
</script>
Le myFormat
filtre formatera tous les autres caractères en majuscules.