-
Notifications
You must be signed in to change notification settings - Fork 1
ToDo Persistente
Implementacion de persistencia.
Tomaremos la aplicacion ToDo que hicimos y haremos que almacene nuestra lista.
Para esto, inauguramos la prueba 9:
phonegap create prueba9 --id com.coderhouse.prueba9 --name "00 Prueba 9" -src templates\todo
o, si quieren usar su propia aplicacion de referencia:
phonegap create prueba9 --id com.coderhouse.prueba9 --name "00 Prueba 9" -src prueba8
Para implementar localStorage debemos localizar en el codigo donde escribimos la lista y como obtenerla antes de arrancar la aplicacion.
A los efectos practicos, seguiremos almacenando nuestra lista en la variable todo.list
, pero cada vez que haya un cambio, escribiremos una copia en localStorage.
Por cada pagina que definimos jQuery Mobile emitira un evento de inicializacion de esa pagina. De esta forma podemos escuchar el evento y ejecutar rutinas:
$('#id-de-pagina').on('pageinit', function() {
//este evento solo se dispara una vez por cada pagina
//por lo que es ideal para tareas de configuracion
});
Nuestra aplicacion se inicializa cuando se jQuery inicializa la pagina #index
. Podemos ver nuestro codigo de inicializacion en estas lineas (alrededor de la linea 44 de todo.js
):
// Inicializar la pagina principal
$('#index').on('pageinit', function() {
console.log('index.pageinit');
// Crear una lista (array)
// Deberiamos corregir este codigo
// por uno que lea los datos de *localStorage*
todo.list = [];
$('#add').on('click', todo.add);
$('#task_list').on('click', 'li a', function() {
todo.selected = $(this).data('task-id');
});
// Actualizar la lista siempre antes de mostrar #index
$('#index').on('pagebeforeshow', todo.refresh_list);
});
Ahora bien, ahi es cuando inicializamos, pero tambien tenemos que interceptar los cambios en la lista. Estos cambios suceden con todo.add
y todo.remove
y ambos llaman al metodo refresh_list
. De esta manera siempre pasamos por refresh_list
y es ahi donde deberiamos actualizar nuestra lista en localStorage:
/** Re-crear la lista desde los valores del array */
todo.refresh_list = function() {
var $tasks = $('#task_list'), i;
// Clear the existing task list
$tasks.empty();
if (todo.list.length) {
// Agregar encabezado
$tasks.append('<li data-role="list-divider">Pendientes</li>');
for (var i=0;i<todo.list.length;i++){
// Agregar cada tarea
var li = '<li><a data-task-id="' + i
+ '" href="#confirm">' + todo.list[i] + '</a></li>'
$tasks.append(li);
}
}
// guardar todo.list en localStorage.todo_list
// actualizar el listado
$tasks.listview('refresh');
};
- Repaso y conceptos basicos
- Ejercicios para repasar
- Problematica de desarrollo mobile
- Phonegap
- Requerimientos e instalacion
- Phonegap CLI
- [Primeros ejercicios con Phonegap](Ejercicio Phonegap)
- Plugins
- Hello world
- Estructura de un proyecto Phonegap
- Plugin Device
- Debugging
- Incorporando un framework CSS
- Plugin Vibration
- Sumando partes
- Plugin Battery Status
- Un poco de jQuery
- jQuery Mobile
- Navegacion
- Plugin Dashboard
- Revision de Plugin Dashboard
- Paginas extra
- ToDo
- Persistencia
- ToDo Persistente
- Plugin Camera
- Opciones de camara
- App Mi Galeria
- Revision de Galeria
- Plugin File
- Escribir y leer texto
- Escribir archivos binarios
- Guardando fotos
- Debugger: weinre
- Inspeccionar con weinre
- Phonegap Developer App
- Refactor de apps
- Plugin Media
- Pruebas con audio
- Control y monitoreo de audio
- Encapsular play/pausa
- Hacks
- Formato de tiempos
- Grabar y reproducir
- Proyecto Integrador
- Revision de interfaz
- Interfaz basica
- Entrevista: modelo
- Funcionalidad: revision
- Seleccion de framework
- iRec: navegacion
- iRec: fileApi
- iRec: guias
- iRec: entrevistas
- iRec: recordApi
- iRec: helpers
- iRec: mediaApi
- iRec: inicializar paginas
- iRec: refactor
- iRec: mediaApi refactor
- iRec: recordApi refactor
- iRec: helpers
- iRec: guias.js
- iRec: entrevistas.js
- iRec: crear guias
- iRec: re-inicializando
- iRec: re-ordenando
- iRec: pendientes
- iRec: reporte ux
- iRec:revision: volver
- iRec:entrevista: volver
- iRec:revision: cambios
- iRec:revision: stop
- iRec:revision: Rew 10"
- iRec:revision: tag Go
- iRec: limpieza
- Firma de apps
- Android
- Generacion de key
- Firma de apk
- Alineacion de zip
- Firmar con Phonegap
- iOS
- Detalles finales
- Config.xml
- Iconos
- Splash