====== 5.2 Escalares ====== Estos filtros se aplican para modificar la forma en la que se muestran datos escalares ((Números, fechas, textos, etc. pero no listas de datos)). Los distintos tipos de filtros para escalares que existen en AngularJS son: * [[#number]] * [[#date]] * [[#currency]] * [[#lowercase]] * [[#uppercase]] ===== number ===== Este filtro se aplica sobre números para limitar el nº de decimales que se muestran de dicho número. Aunque también cambia el separador de decimales al idioma que se esté usando actualmente. **formato:** ''%%{{valor | number:numdecimales %%}}'' Veamos ahora un ejemplo:
{{importe | number:2}}
La variable ''importe'' sólo se mostrará con 2 decimales. Si no se indica el número de decimales, por defecto se muestran 3 decimales. ===== date ===== Este filtro se aplica sobre fechas para mostrar un formato concreto. **formato:** ''%%{{valor | date:'formato' %%}}'' El formato de fecha acepta entre otros los siguientes campos: * ''yyyy'': El año con 4 dígitos. 2012, 1998 * ''MM'': El mes en formato numérico con dos dígitos. 01, 09, 12 * ''dd'': El día del mes con dos dígitos. 01, 21, 31 * ''HH'': La hora en 24 Horas con dos dígitos. 01, 09, 11, 23 * ''mm'': Los minutos con dos dígitos. 01, 09, 45, 59 * ''ss'': Los segundos con dos dígitos. 01, 09, 45, 59 La referencia completa de los formatos de fecha la podemos encontrar en [[https://docs.angularjs.org/api/ng/filter/date|date]] Veamos ahora un ejemplo:
{{miFecha | date:'yyyy/MM/dd'}}
Al mostrar la variable ''fecha'' se verá primero el año, luego los meses y finalmente los días. AngularJS soporta que en vez de especificar directamente el formato de la fecha se usen los siguientes formatos predefinidos : * ''medium'' * ''short'' * ''fullDate'' * ''longDate'' * ''mediumDate'' * ''shortDate'' * ''mediumTime'' * ''shortTime'' El significado exacto de estos formatos depende del idioma que se haya elegido, aunque se pueden intuir por el nombre que tienen. Así que en la mayoría de las ocasiones se deberían usar estos formatos predefinidos.
{{miFecha | date:'shortDate'}}
Fíjate en que al poner opciones del filtro que sean un String hay que ponerlo entre comillas. ===== currency ===== Este filtro muestra un número con el símbolo de la moneda local y con el número de decimales correctos. **formato:** ''%%{{ valor | currency %%}}'' Veamos ahora un ejemplo:
{{ importe | currency }}
La variable ''importe'' se mostrará por defecto con el símbolo del $ y con 2 decimales pero si estamos en el idioma de "es-es" se mostrará con el símbolo del "€" y también 2 decimales. Este filtro también soporta pasarle directamente el símbolo de la moneda.Aunque el nº de decimales, separador, etc. seguirán siendo el del idioma definido.
{{ 12.45 | currency:'EUR' }}
Mostrará "12,45 EUR" en vez de "12,45 €".
===== lowercase ===== Este filtro transformará un String a minúsculas. **formato:** ''%%{{ valor | lowercase %%}}'' Veamos ahora un ejemplo:
{{ nombre | lowercase }}
La variable ''nombre'' se mostrará en minúsculas. ===== uppercase ===== Este filtro transformará un String a mayúsculas. **formato:** ''%%{{ valor | uppercase %%}}'' Veamos ahora un ejemplo:
{{ nombre | uppercase }}
La variable ''nombre'' se mostrará en mayúsculas. ===== Internacionalización ===== Como hemos visto, los filtros ''number'' , ''date'' y ''currency'' varían su formato en función del idioma y país. ¿Cómo podemos indicar al AngularJS el idioma y el país que queremos usar? Simplemente debemos cargar el fichero JavaScript con el idioma y pais correspondiente. Cuando nos descargamos AngularJS, en la carpeta ''i18n'' tenemos todos los ficheros para cada idioma/pais. Así si por ejemplo queremos usar el idioma español en España sólo hay que cargar el fichero: i18n/angular-locale_es-es.js Por lo tanto en una aplicación en España con el idioma español sólo hay que incluir la siguiente línea después de cargar AngularJS: Lo que no soporta (por ahora) AngularJS es más tipos de internacionalización como puedan ser los mensajes, sin embargo hay varios proyectos en github con filtros dedicados a ello. Recuerda cagar el Script con el idioma adecuado tras cargar AngularJS: No he visto cómo se puede cargar los ficheros de internacionalización de AngularJS desde el CDN de Google , es decir desde ''ajax.googleapis.com/ajax/libs/angularjs'', así que los estoy cargando desde la página de descarga, es decir desde ''code.angularjs.org''. ===== Ejemplo ===== En el siguiente ejemplo se aplican los distintos filtros , mostrando todas las variantes de formatos predefinidos de fecha . Para los ejemplos se ha usado el idioma español en España.
number:4 = {{ numeroDecimal | number:4 }}
number = {{ numeroDecimal | number }}


date:"yyyy/MM/dd" = {{ fecha | date:"yyyy/MM/dd" }}
date:"medium" = {{ fecha | date:"medium" }}
date:"short" = {{ fecha | date:"short" }}
date:"fullDate" = {{ fecha | date:"fullDate" }}
date:"longDate" = {{ fecha | date:"longDate" }}
date:"mediumDate" = {{ fecha | date:"mediumDate" }}
date:"shortDate" = {{ fecha | date:"shortDate" }}
date:"mediumTime" = {{ fecha | date:"mediumTime" }}
date:"shortTime" = {{ fecha | date:"shortTime" }}
date = {{ fecha | date }}


currency = {{ numeroDecimal | currency }}


lowercase = {{ texto | lowercase }}


uppercase = {{ texto | uppercase }}
var app=angular.module("app",[]); app.controller("PruebaController",["$scope",function($scope) { $scope.fecha=new Date(); $scope.numeroDecimal=321.98324; $scope.texto="Hola Mundo"; $scope.objeto='{nombre:"Juan",apellido:"Perez",direccion: {calle:"Avenida Blasco Ibañez",numero:34}}'; }]); {{url>http://embed.plnkr.co/uXmtY3}} ===== Referencias ===== * [[https://docs.angularjs.org/api/ng/filter/number|/ API Reference / ng / filter / number]] * [[https://docs.angularjs.org/api/ng/filter/date|/ API Reference / ng / filter / date]] * [[https://docs.angularjs.org/api/ng/filter/currency|/ API Reference / ng / filter / currency]] * [[https://docs.angularjs.org/api/ng/filter/lowercase|/ API Reference / ng / filter / lowercase]] * [[https://docs.angularjs.org/api/ng/filter/uppercase|/ API Reference / ng / filter / uppercase]] * [[https://docs.angularjs.org/guide/i18n|/ Developer Guide / i18n and l10n]]