FLEX: Accediendo a datos (IV)

1 06 2008

Cuarto capítulo, en este caso se accede a un fichero de datos XML almacenado en una máquina remota. La carga del fichero se realiza en tiempo de ejecución gracias a la clase "HTTPService" que además permite procesar peticiones asíncronas.

Carga de datos remotos (I)

Esta solución resuleve el problema de peso del fichero ya que los datos no se almacenan en su interior tal y como ocurría en los ejemplos anteriores (ver capítulo 1, 2 y 3) además, permite actualizar los datos en tiempo real. Como inconveniente está el incremento en el tiempo de respuesta, ya que los datos se obtienen mediante peticiones HTTP.

Para este ejemplo, se ha recurrido al fichero "units.xml" empleado en los ejemplos del libro "Adobe FLEX de la editorial ANAYA".

Descripción del código



<mx:Application
   xmlns:mx="http://www.adobe.com/2006/mxml
   layout="absolute
   creationComplete="unitRPC.send()"
>


<mx:Application >

Contenedor externo de todo el contenido de la aplicación. Se emplea una única etiqueta para cada aplicación FLEX.

xmlns:mx=”http://www.adobe.com/2006/mxml&#8221;

Asociación al archivo de manifiesto que contiene todas las etiquetas válidas con el prefijo mx.

layout=”absolute”

Modo de despliegue de nodos. Existen tres: absoluto (posiciona los elementos según los valores x e y), vertical y horizontal.

creationComplete=”unitRPC.send()”

Evento de mx:Application. Llama a los datos cuando todos los controles están cargados y listos para ser usados.


<mx:HTTPService
   id="unitRPC"
   url="http://www.flexgrocer.com/units.xml&quot;
   result="unitRPCResult(event)"
/>


<mx:HTTPService />

Este objeto permite la carga de datos XML en tiempo de ejecución y permite peticiones asíncronas.

id="unitRPC"

Identificación del elemento.

url="http://www.flexgrocer.com/units.xml&quot;

Propiedad que especifica el proveedor de datos.

result="unitRPCResult(event)"

Evento que será ejecutado cuando se hayan recuperado todos los datos desde el servidor y llamará a la función proveedora de resultados unitRPCResult(event) y creará el objeto event.


<mx:Script>
   <![CDATA[
     import mx.collections.ArrayCollection;
     import mx.rpc.events.ResultEvent;
     [Bindable]
     private var units:ArrayCollection = new ArrayCollection();
     /**
     * Proveedor de resultados
     */
     private function unitRPCResult(event:ResultEvent):void {
      units = event.result.allUnits.unit;
     }
   ]]>
</mx:Script>


<mx:Script> … </mx:Script>

Bloque de código ActionScript.

<![CDATA[ … ]]>

Wrapper que protege el código escrito en ActionScript para evitar que el compilador lo considere un bloque XML.

import mx.collections.ArrayCollection;

Importación de clases.

import mx.rpc.events.ResultEvent;

Importación de clases.

[Bindable]

Permite que todos los componentes y/o objetos “escuchen” los cambios que ocurran en la variable units para que éstos actualicen los datos.

private var units:ArrayCollection = new ArrayCollection();

Variable privada con el nombre units del tipo ArrayCollection. Se utiliza para vincular los datos.

/**…*/*

Comentarios.

private function unitRPCResult(event:ResultEvent):void { … }

Es una función privada que se emplea como proveedor de resultados.

units = event.result.allUnits.unit;

Carga el ArrayCollection units mediante la propiedad event.result del objeto event.


<mx:VBox>
   <mx:List id="unitName"
     rowCount="4"
     dataProvider="{units}"
     labelField="unitName"/>
</mx:VBox>


<mx:VBox>…</mx:VBox>

Contenedor que presenta sus nodos descendentes de forma horizontal. Los nodos se sitúan a la derecha del nodo anterior.

<mx:List…/>

Muestra un listado vertical de elementos.

id="unitName"

Identificación del elemento.

rowCount="4"

Propiedad que determina el número de elementos que se mostrarán.

dataProvider="{units}"

Propiedad que define el conjunto de datos a mostrar.

labelField="unitName"/>

Propiedad de define el nombre del campo a mostrar en el proveedor de datos.

Al ejecutar el código, obtendremos el siguiente resultado.


Add to Technorati Favorites

Anuncios

Acciones

Information

2 responses

6 02 2009
Miller

Aguanta aguanta…
Gracias por la info no me quedaba claro lo del Bindable

29 01 2010
Danie Garay

muy buen recurso acerca Flex!…

Gracias por el Aporte!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: