====== 5.3 Listas ====== Estos filtros se aplican para modificar la forma en la que se muestran arrays de datos. * [[#orderBy]]: Permite ordenar un array * [[#limitTo]]: Limita el número de elementos de un 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 ===== Permite ordenar un array de datos.El resultado será el mismo array pero ordenado. **formato:** ''%%{{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 más de una columna pondremos un array de Strings ''%%{{array | orderBy:['propiedad1','propiedad2',...,'propiedadn'] %%}}'' Veamos ahora un ejemplo: Supongamos los siguientes datos $scope.provincias = [{ codProvincia: "02", nombre: "Albacete" }, { codProvincia: "03", nombre: "Alicante/Alacant" }, { codProvincia: "04", nombre: "Almería"        }]; podemos mostrar las provincias en una tabla ordenadas por la columna ''nombre'' con la siguiente expresión: {{provincia.codProvincia}} {{provincia.nombre}} Si quisiéramos ordenar por ''nombre'' y en caso de que dos se llamaran igual ((Algo que es imposible)) por ''codProvincia'' usaríamos un array con los 2 Strings: {{provincia.codProvincia}} {{provincia.nombre}} 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: {{provincia.codProvincia}} {{provincia.nombre}} 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. 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" ===== limitTo ===== Este filtro permite limitar el nº de elementos que se muestran del array. **formato:** ''%%{{array | limitTo:numero %%}}'' Siendo ''numero'' el nº de elementos que queremos mostrar del array. Veamos ahora un ejemplo: Supongamos los siguientes datos $scope.provincias = [{ codProvincia: "02", nombre: "Albacete" }, { codProvincia: "03", nombre: "Alicante/Alacant" }, { codProvincia: "04", nombre: "Almería"        }]; podemos mostrar sólo las 2 primeras provincias con: {{provincia.codProvincia}} {{provincia.nombre}} Si el valor es negativo lo que muestra es los 'n' últimos elementos del array en vez de los 'n' primeros. Podemos mostrar sólo las 2 últimas provincias con: {{provincia.codProvincia}} {{provincia.nombre}} Recuerda que ''limitTo'' permite números negativos para indicar que se muestran los 'n' últimos elementos del array. 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. ===== filter ===== 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. ===== Ejemplo ===== {{url>http://embed.plnkr.co/oBHs8q}} ===== Referencias ===== * [[https://docs.angularjs.org/api/ng/filter/orderBy|/ API Reference / ng / filter / orderBy]] * [[https://docs.angularjs.org/api/ng/filter/limiTo|/ API Reference / ng / filter / limiTo]]