Unidad 25. AJAX y Spry Framework (IX)

25.8. Condicionales

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.

 

Pág. 25.9

Atrás  Inicio  Adelante