2012-03-05 15 views
8

z localStorage mam ładunek nieokreślonych przedmiotów o nazwach zapisanych dynamicznych z użyciem nazw danych tak:obiekty rozrachunkowych z localStorage

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

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

chcę zachować ustawienia, ale nie dane. Jednak nigdy nie wiem, jakie są wszystkie nazwy wewnątrz mojego obiektu danych, więc nie mogę ich pojedynczo usunąć. Muszę je usuwać za każdym razem, gdy moja aplikacja jest ładowana, ale muszę zachować ustawienia, aby nie było opcji.

Próbowałem:

localstorage.removeItem("myAppName.data") 

ale bez kości.

Ktoś myśli o tym, jak wyczyścić dynamicznie nazwane części localstorage?

+0

To wstyd, że localStorage nie zawierać nazw jako część podstawowego API. W międzyczasie jest to: https://github.com/joelarson4/LSNS – jlarson

Odpowiedz

2

spróbować czegoś jak

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

Próbował coś lubię to?

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

Powinno to być localStorage.clear(), nie localstorage z małych s. – Sindre

0

Zakładając this.namespace prezent (w moim przypadku 'session') oraz bibliotekę podkreślenia:

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

iz coffeescript:

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