Data Store
Los almacenes de datos (data store) se utilizan para encapsular o almacenar una colección de instancias de un modelo determinado. Además disponen de funciones para ordenar, filtrar y consultar los datos. De forma opcional podemos indicar que utilicen un proxy para sincronizar estos datos con un almacén local o remoto.
En esta sección nos vamos a centrar en las características para gestionar un store: añadir, ordenar, filtrar, buscar y eliminar. En la siguiente sección sobre proxies veremos como hacer persistentes estos datos.
Crear un Data Store
Crear un almacén de datos es fácil, utilizaremos el constructor Ext.create('Ext.data.Store', {...})
y como segundo parámetro le pasaremos las opciones de configuración indicando el nombre del modelo:
Añadir datos
Podemos añadir datos directamente junto a la definición de un Store, solo tenemos insertarlos como un array a través de su propiedad "data". Suponiendo que el modelo "User" solo tuviera dos campos (id, name), podríamos añadir datos de la forma:
O también podemos añadir datos posteriormente llamando a la función "add
" del objeto:
Ordenar y Filtrar elementos
Para ordenar y filtrar los datos usamos las propiedades "sorters
" y "filters
". En el siguiente ejemplo se ordenan los datos de forma descendente por nombre de usuario (también podría ser ASC
) y se realiza un filtrado por género (los filtros también admiten expresiones regulares).
Buscar registros
En algunos casos antes de añadir un registro será necesario comprobar si el registro está repetido. Para esto podemos utilizar el método findRecord(campo, valor)
del Store, el cual devuelve el registro encontrado o null en caso de no encontrar ninguna coincidencia. En el siguiente ejemplo se compara el campo id de los datos del Store, con el campo id del registro a añadir:
Otra opción para buscar registros es la función find(campo, valor)
la cual devuelve el índice del registro encontrado (o -1 en caso de no encontrarlo), y posteriormente podríamos llamar a getAt(index)
para obtener los datos.
Eliminar registros
Para eliminar un registro de un Store usaremos la función remove(registro)
, por ejemplo:
Es recomendable comprobar si existe el registro a eliminar, para esto usaremos la función findRecord()
. Normalmente el Store estará asignado a algún panel que nos permita ver los datos (como un listado). Si quisiésemos eliminar un registro de este listado, primero tendríamos que obtener el Store usado, a continuación comprobar si existe el registro y si es así eliminarlo. Por último habría que sincronizar los datos para que se actualicen, de la forma:
También podemos utilizar la función removeAt(index)
para eliminar los registros de un Store a partir de su índice.
Last updated
Was this helpful?