Los filtros pueden ser añadidos en AngularJS a datos de formato.
Filtros AngularJS
AngularJS ofrece filtros para transformar los datos:
-
currency
formato a un número a un formato de moneda. -
date
formato de una fecha a un formato especificado. -
filter
seleccionar un subconjunto de elementos de una matriz. -
json
formato a un objeto a una cadena JSON. -
limitTo
Límites de una matriz / cuerda, en un número determinado de elementos / personajes. -
lowercase
Formato de una cadena a minúsculas. -
number
formato a un número en una cadena. -
orderBy
Ordena una matriz por una expresión. -
uppercase
Formato de una cadena a mayúsculas.
Cómo añadir filtros a las expresiones
Los filtros pueden ser añadidos a las expresiones utilizando el carácter de canalización |
, seguido por un filtro.
Las uppercase
cadenas de formato de filtro en mayúsculas:
Ejemplo
<div ng-app="myApp" ng-controller="personCtrl">
<p>The name is {{ lastName | uppercase }}</p>
</div>
Inténtalo tú mismo " Las lowercase
cadenas de formato de filtro a minúsculas:
Ejemplo
<div ng-app="myApp" ng-controller="personCtrl">
<p>The name is {{ lastName | lowercase }}</p>
</div>
Inténtalo tú mismo " Cómo añadir filtros a las Directivas
Los filtros se añaden a las directivas, como ng-repeat
, mediante el uso de la barra vertical |
, seguido de un filtro:
Ejemplo
El orderBy
filtro ordena una matriz:
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names | orderBy:'country'">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
Inténtalo tú mismo " El filtro de la moneda
La currency
filtro de formato a un número como moneda:
Ejemplo
<div ng-app="myApp" ng-controller="costCtrl">
<h1>Price: {{ price | currency }}</h1>
</div>
Inténtalo tú mismo " Más información sobre el filtro de moneda en nuestra moneda AngularJS filtro de referencia
El filtro de filtro
El filter
filtro selecciona un subconjunto de una matriz.
El filter
filtro sólo se puede utilizar en las matrices, y devuelve una matriz que contiene sólo los elementos que coincidan.
Ejemplo
Devolver los nombres que contiene la letra "i":
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names |
filter : 'i'">
{{ x }}
</li>
</ul>
</div>
Inténtalo tú mismo " Más información sobre el filtro de filtro en nuestro filtro de filtro de referencia AngularJS
Filtrar una matriz basada en la entrada del usuario
Al establecer el ng-model
directiva sobre un campo de entrada, podemos usar el valor del campo de entrada como una expresión en un filtro.
Escribir una letra en el campo de entrada, y la lista se reducirá / crecer en función del partido:
- {{ x }}
Ejemplo
<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>
Inténtalo tú mismo " Ordena una matriz basada en la entrada del usuario
Haga clic en los encabezados de tabla para cambiar el orden de clasificación ::
Nombre | País |
---|---|
{{}} X.name | {{}} X.country |
Al añadir el ng-click
directiva sobre los encabezados de la tabla, se puede ejecutar una función que cambia el orden de clasificación de la matriz:
Ejemplo
<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>
Inténtalo tú mismo " Los filtros personalizados
Usted puede hacer sus propios filtros mediante el registro de una nueva función de filtro de fábrica con su módulo:
Ejemplo
Hacer un filtro personalizado llamado "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>
Inténtalo tú mismo " El myFormat
filtro dará formato a todos los demás caracteres en mayúsculas.