Muestra las diferencias entre dos versiones de la página.
unidades:05_filtros:03_listas [2014/08/07 08:58] admin [limitTo] |
unidades:05_filtros:03_listas [2014/08/30 10:21] (actual) admin |
||
---|---|---|---|
Línea 5: | Línea 5: | ||
* [[#limitTo]]: Limita el número de elementos de un array | * [[#limitTo]]: Limita el número de elementos de un array | ||
* [[#filter]]: Filtra los datos del array. | * [[#filter]]: Filtra los datos del array. | ||
+ | |||
+ | Lo normal es usar estos filtros dentro de la directiva ''ng-repeat'' para modificar la manera en que se muestran los elementos de una tabla. | ||
===== orderBy ===== | ===== orderBy ===== | ||
Línea 13: | Línea 15: | ||
''%%{{array | orderBy:'propiedad' %%}}'' | ''%%{{array | orderBy:'propiedad' %%}}'' | ||
- | Siendo ''propiedad'' el nombre de la propiedad del objeto de cada elemento del array por la que queremos ordenar. Si queremos ordenar por mas de una columna pondremos un array de Strings | + | Siendo ''propiedad'' el nombre de la propiedad del objeto de cada elemento del array por la que queremos ordenar. Si queremos ordenar por más de una columna pondremos un array de Strings |
''%%{{array | orderBy:['propiedad1','propiedad2',...,'propiedadn'] %%}}'' | ''%%{{array | orderBy:['propiedad1','propiedad2',...,'propiedadn'] %%}}'' | ||
Línea 51: | Línea 53: | ||
</sxh> | </sxh> | ||
- | Si queremos ordenar en vez de forma ascendente de forma descendente no tenemos mas que incluir el signo "-" menos delante del nombre de la columna: | + | Si queremos ordenar en vez de forma ascendente de forma descendente no tenemos más que incluir el signo "-" menos delante del nombre de la columna: |
<sxh html> | <sxh html> | ||
Línea 61: | Línea 63: | ||
<note tip> | <note tip> | ||
- | AngularJS tambien permite crear tu propia función de ordenación pero no vamos ver nada sobre ella ya que la encuentro compleja de usar lo que la hace poco útil. | + | AngularJS tambien permite crear tu propia función de ordenación pero no vamos a ver nada sobre ella ya que la encuentro compleja de usar lo que la hace poco útil. |
</note> | </note> | ||
+ | |||
+ | <note warning> | ||
+ | Un problema de este filtro es que al ordenar no tiene en cuenta los acentos o cosas similares, por lo que por ejemplo las letras con acentos irán después de todas las letras //normales//. | ||
+ | |||
+ | En el ejemplo que hay a continuación fíjate cómo la última provincia que se muestra es "Badajoz" y no aparece "Ávila" | ||
+ | </note> | ||
===== limitTo ===== | ===== limitTo ===== | ||
Este filtro permite limitar el nº de elementos que se muestran del array. | Este filtro permite limitar el nº de elementos que se muestran del array. | ||
Línea 89: | Línea 97: | ||
</sxh> | </sxh> | ||
- | podemos mostrar solo las 2 primeras provincias con: | + | podemos mostrar sólo las 2 primeras provincias con: |
<sxh html> | <sxh html> | ||
Línea 100: | Línea 108: | ||
Si el valor es negativo lo que muestra es los 'n' últimos elementos del array en vez de los 'n' primeros. | Si el valor es negativo lo que muestra es los 'n' últimos elementos del array en vez de los 'n' primeros. | ||
- | Podemos mostrar solo las últimas 2 provincias con: | + | Podemos mostrar sólo las 2 últimas provincias con: |
<sxh html> | <sxh html> | ||
<tr ng-repeat="provincia in provincias | limitTo:-2"> | <tr ng-repeat="provincia in provincias | limitTo:-2"> | ||
Línea 111: | Línea 119: | ||
Recuerda que ''limitTo'' permite números negativos para indicar que se muestran los 'n' últimos elementos del array. | Recuerda que ''limitTo'' permite números negativos para indicar que se muestran los 'n' últimos elementos del array. | ||
</note> | </note> | ||
- | ===== filter ===== | ||
- | Filtra el array para que el array resultante solo tenga ciertos datos del array original | ||
- | **formato:** | ||
- | ''%%{{unidades:%% valor | filter:expresion %%}}%%'' | + | <note tip> |
- | + | Aunque está en la documentación oficial de AngularJS, el filtro ''limitTo'' también se puede aplicar a Strings. En ese caso lo que hace es mostrar los "n" primeros/últimos caracteres del String. | |
- | Siendo ''expresion'' una expresión que filtrará los datos del array. | + | </note> |
- | + | ===== filter ===== | |
- | Veamos ahora un ejemplo: | + | Ya que el filtro [[unidades:05_filtros:04_filter|filter]] dispone de tantas opciones, le hemos dedicado el [[unidades:05_filtros:04_filter|siguiente tema]] completo a él. |
- | + | ||
- | Supongamos los siguientes datos | + | |
- | <sxh js> | + | |
- | $scope.valores = [{ | + | |
- | idProvincia: 1, | + | |
- | nombre: "Valencia" | + | |
- | }, { | + | |
- | idProvincia: 2, | + | |
- | nombre: "Castellón" | + | |
- | }, { | + | |
- | idProvincia: 3, | + | |
- | nombre: "Alicante" | + | |
- | }]; | + | |
- | </sxh> | + | |
- | + | ||
- | podemos mostrar solo aquellas provincias cuyo nombre contenga una "t" mediante la siguiente expresión: | + | |
- | + | ||
- | <sxh js> | + | |
- | {{unidades: valores | filter:{ nombre:'t' } }} | + | |
- | </sxh> | + | |
===== Ejemplo ===== | ===== Ejemplo ===== | ||
Línea 148: | Línea 133: | ||
===== Referencias ===== | ===== Referencias ===== | ||
* [[https://docs.angularjs.org/api/ng/filter/orderBy|/ API Reference / ng / filter / orderBy]] | * [[https://docs.angularjs.org/api/ng/filter/orderBy|/ API Reference / ng / filter / orderBy]] | ||
- | * [[https://docs.angularjs.org/api/ng/filter/filter|/ API Reference / ng / filter / filter]] | + | * [[https://docs.angularjs.org/api/ng/filter/limiTo|/ API Reference / ng / filter / limiTo]] |