javascript - que - Guardar un modelo en el almacenamiento local
local storage javascript (2)
Me encontré con el mismo problema. Tal vez tengas algo similar a esto
var Settings = Backbone.Model.extend({
localStorage: new Store("Settings"),
defaults: { a: 1 }
});
var s = new Settings;
s.fetch();
Cambié a
var s = new Settings({ id: 1 });
Verificación del adaptador localStorage para id como
case "read": resp = model.id ? store.find(model) : store.findAll(); break;
así que 0
o ""
para id no funcionará y devolverá todos los modelos en uno
Estoy usando el adaptador de almacenamiento local de Jerome con Backbone y funciona muy bien para las colecciones.
Pero, ahora tengo un modelo único que necesito guardar. Así que en mi modelo me puse:
localStorage: new Store("msg")
Entonces hago mis salvados y voy a buscar. Mi problema es que cada vez que hago una actualización e inicializo mi aplicación, se agrega una nueva representación de mi modelo a localStorage, ver más abajo.
¿Qué estoy haciendo mal?
window.localStorage.msg = {
// Created after first run
"1de5770c-1431-3b15-539b-695cedf3a415":{
"title":"First run",
"id":"1de5770c-1431-3b15-539b-695cedf3a415"
},
// Created after second run
"26c1fdb7-5803-a61f-ca12-2701dba9a09e":{
"0":{
"title":"First run",
"id":"1de5770c-1431-3b15-539b-695cedf3a415"
},
"title":"Second run",
"id":"26c1fdb7-5803-a61f-ca12-2701dba9a09e"
}
}
También soy nuevo en backbone.js, pero parece que el modelo de persistencia es análogo a las tablas de base de datos. Es decir, está diseñado para crear / eliminar / leer registros de una tabla. El adaptador localStorage hace lo mismo, por lo que lo que está haciendo allí es crear una "tabla" de Msg en localStorage, y crear un nuevo "registro" de Msg "cada vez, y el adaptador le da a cada nuevo Msg una identificación única.
Si solo tienes un objeto, es probable que sea más fácil usar localStorage directamente. La API es realmente sencilla:
localStorage.setItem("key","value");
Tenga en cuenta que localStorage solo trata con los pares clave / valor como cadenas, por lo que deberá convertir a / desde el formato de cadena.
Echa un vistazo a esta pregunta para obtener más información sobre cómo hacerlo: