2012-03-05 10 views
8

con localStorage i tienen una carga de artículos no especificados guardadas con nombres dinámicos utilizando un espacio de nombres de datos de este modo:objetos de compensación de localStorage

localStorage["myAppName.settings.whatever"] = something.whatever; 

//and this: 
localStorage["myAppName.data."+dynObj.name] = dynObj.data; 

que quieren mantener la configuración, pero no los datos. Sin embargo, nunca sabré cuáles son todos los nombres dentro de mi objeto de datos, así que no puedo borrarlos individualmente. Necesito borrarlos cada vez que cargue mi aplicación, pero debo mantener la configuración para que localstorage.clear() no sea una opción.

que he intentado:

localstorage.removeItem("myAppName.data") 

pero no dados.

¿Alguien tiene alguna idea sobre cómo borrar las porciones dinámicamente nombradas del almacén local?

+0

Es una pena que localStorage no incluye un espacio de nombres como parte de la API básica. Mientras tanto, está esto: https://github.com/joelarson4/LSNS – jlarson

Respuesta

2

intentar algo así como

var i = localStorage.length, key; 
while (i--) { 
    key = localStorage.key(i); 
    if (key.slice(0, 19) !== "myAppName.settings.") { 
    localStorage.remove(key); 
    } 
} 
0

intentado algo ¿Me gusta esto?

// Select current settings 
var settings = localStorage["myAppName.settings"] || {}; 
// Clear localStorage 
localStorage.clear(); 
// Add settings to localStorage 
localStorage["myAppName.settings"] = settings; 
+0

Debe ser localStorage.clear(), no localstorage con s pequeña. – Sindre

0

Suponiendo un presente this.namespace (en mi caso 'session') y la biblioteca de subrayado:

_.each(_.keys(localStorage), function(key) { 
    if (RegExp("^" + this.namespace + "\\.").test(key)) { 
    return localStorage.removeItem(key); 
    } 
}); 

Y con CoffeeScript:

_.each _.keys(localStorage), (key) -> 
    if ///^#{@namespace}\.///.test(key) 
    localStorage.removeItem(key) 
Cuestiones relacionadas