2016-12-10 1 views
1

Ich bin neu in Jquery Mobile. Ich mache eine Einkaufslistenanwendung für meine Schulaufgabe und ich werde aufgefordert, Objekte im lokalen Speicher zu speichern.JQuery Mobile JSON Stringify

Jeder Artikel muss die folgenden Informationen enthalten: Artikel Name, Artikelmenge und ein Boolescher Wert is_bought. Ich möchte alle Elemente Daten in einem JSON-String speichern. Elementdaten werden vom Benutzer von einer anderen Seite eingegeben.

Mein Problem ist 1) Wie Elemente im lokalen Speicher durch JSON stringify gespeichert werden können.

2) Wie Elementdaten aus JSON-String abgerufen werden können, um in einer Liste dargestellt zu werden.

+0

http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage – Viney

Antwort

2

Erste: Wenn ich dich verstanden rechts ein Objekt (json) Struktur haben wie:

{ 
    "name": "cheese", 
    "quantity": 2, 
    "is_bought": false 
} 

Wenn nicht (in Frage haben Sie keine Schlüssel (Name) für Ihre Variablen) Ihre Struktur Muss wie ich gezeigt habe für einen Zugriff auf jede Variable im Objekt.

Zweite: Über localStorage. Sie können nur Paare aus Schlüssel/Wert-Paaren verarbeiten, sodass Sie nicht einfach ein Objekt darin speichern können. Sie müssen JSON.stringify() verwenden, um Ihr Objekt in die Zeichenfolge zu analysieren und in localStorage zu speichern. Verwenden Sie nach dem Abrufen JSON.parse(), um es erneut zu analysieren. Der Code könnte wie folgt aussehen:

var item = {"name": "cheese", "quantity": 2, "is_bought": true}; 

// Store item into localStorage 
localStorage.setItem('item', JSON.stringify(item)); 
// Retrieve item from localStorage 
var retrievedItem = localStorage.getItem('item'); 
var parsedItem = JSON.parse(retrievedItem); 

EDIT: Um mehrere Elemente Store

Also, wenn Ihre Frage zu speichern mehrere Artikel und unterscheiden sie und , wenn Ihr Artikel Nameeinzigartig ist und Sie wissen, welcher Artikel gekauft wird, können Sie sie in den localStorage mit dem Schlüssel des Elementnamens speichern, z

// You can do this in a for loop 
localStorage.setItem('item_' + item.name, JSON.stringify(item)); 

// And to change (if you already know bought item's name), 'cheese' for example 
var retrievedItem = localStorage.getItem('item_cheese'); 
var parsedItem = JSON.parse(retrievedItem); 
parsedItem.is_bought = true; 
// And save again in localStorage 
localStorage.setItem('item_cheese', JSON.stringify(parsedItem)); 
+0

Was mit Ihrem Code passiert, wenn es mehr als ein Element ist? :) –

+0

Ohh .. Entschuldigung. Ich habe die Frage missverstanden :) –

+0

Vielen Dank für Ihr Feedback. Wie aber kann man Daten in einer Objektliste dynamisch eingeben? – Stephen