Es posible crear condiciones dentro de las áreas de repetición para decidir si los elementos se deberán mostrar o no.
Para ello nos podremos valer de diferentes métodos.
El primero que veremos será el atributo spry:test, que debe colocarse junto a un spry:repeat (o spry:repeatchildren)
Este atributo nos permite crear una condición junto a la repetición que evaluará cada fila y la mostrará si cumple la condición.
Por ejemplo:
<div spry:region="miDataSet"> <ul spry:repeatchildren="miDataSet" spry:test="{ds_RowID} <= 5;"> <li>{@id}, {propiedad}</li> </ul> </div>
Esta condición hará que la repetición se produzca mostrando los 6 primeros elementos (recuerda que el conteo empieza en 0, por lo que el sexto elemento tendrá una RowID de 5). RowID, es un identificador que asigna automáticamente Spry a cada fila o registro, comenzando por 0. No tiene nada que ver con el valor del atributo @id.
Otra forma de crear condiciones es utilizando las expresiones regulares que comentamos en la unidad 12.
De esta forma podemos crear condiciones que evalúen el contenido de algún campo:
<ul spry:repeatchildren="miDataSet" spry:test="'{propiedad}'.search(/^An/) != -1;">
De esta forma mostraremos sólo aquellos registros cuyo campo propiedad empiece por An. != es el operador lógico que indica distinto.
La función de JavaScript search evalúa la expresión regular indicada (que debe de ir delimitada por los barras /). Si encuentra alguna coincidencia devuelve su posición (la posición 0 sería el primer carácter). Si no la encuentra, devuelve -1.
Por tanto, si quisiésemos aquellos que no empiezan por An deberíamos escribir:
<ul spry:repeatchildren="miDataSet" spry:test="'{propiedad}'.search(/^An/) == -1;">
== es el operador lógico que indica igual.
E incluso podríamos igualar un campo para mostrar sólo aquél que tenga determinado valor. En este caso hacemos la comparación directamente:
<ul spry:repeatchildren="miDataSet" spry:test="'{propiedad}' == 'valor';">
Luego podemos encontrar otros elementos de condición más complejos y flexibles.
Estos no necesitan estar al lado de un spry:repeat, pero sí dentro de una etiqueta afectada por él.
Síguenos en: Facebook Sobre aulaClic Política de Cookies
© aulaClic. Todos los derechos reservados. Prohibida la reproducción por cualquier medio.