irec guias - CGastrell/phonegap GitHub Wiki
Guias
Las guias quedaran almacenadas en un archivo guias.json
. Este es un archivo de texto y tiene las mismas limitaciones que cuando queriamos almacenar datos en localStorage, por lo cual estaremos usando JSON.parse()
y JSON.stringify()
para leer y guardar respectivamente el contenido del archivo.
Vamos a crear un objeto guias
y vamos a darle funciones basicas: inicializacion, guardar y leer:
var guias = {
lista: [], // <-- array para tener la lista de guias a mano
ready: false,
initialize: function(){
guias.obtenerGuias(function(err, contents){
if(err) {
console.log('Error obteniendo el archivo de guias');
guias.lista = [];
}
if(contents) {
guias.lista = JSON.parse(contents);
}
guias.ready = true;
});
},
guardarGuias: function(callback){
var guiasEnTexto = JSON.stringify(guias.lista);
fileApi.writeTextFile('guias.json', guiasEnTexto, function(){
callback && callback();
});
},
obtenerGuias: function(callback) {
var onError = function(err) {
callback && callback(err, null);
}
var onFile = function(fileEntry) {
fileEntry.file(
function(fileObject){
var reader = new FileReader();
reader.onloadend = function(){
callback && callback(null, this.result);
}
reader.readAsText(fileObject);
},
onError
);
}
fileApi.dir.getFile('guias.json', {create:true}, onFile, onError);
}
}
Se puede ver que los 3 metodos de guias
dependen de fileApi
, por lo cual es importante que solo inicialicemos guias
si fileApi
esta inicializado.
Ahora en el callback de fileApi.initialize()
podemos inicializar guias
(busquenlo al final de la funcion init
):
fileApi.initialize(function(err, apiRef){
if(err) {
console.log('file api error');
console.log(err);
return;
}
//inicializaciones dependientes de fileApi
guias.initialize();
});
Si probamos este codigo en el dispositivo podemos examinar en la consola el objeto guias
. De la ultima clase deberiamos tener la funcion crearGuia()
que usamos para pruebas.
Desde la consola podemos crear la guia de ejemplo:
crearGuia()
Y usando el objeto guias
podemos crear la primer guia desde la consola y guardarla:
guias.lista.push(crearGuia());
guias.guardarGuias(function(){console.log('se guardaron las guias')})
Luego de esta prueba ya deberian tener guardado el archivo guias.json
con la guia de prueba dentro.
A continuacion veremos el objeto entrevistas
que es casi identico a guias
.