2016-12-10 3 views
1

Я новичок в jquery mobile. Я делаю приложение списка покупок для моего школьного задания, и мне предлагается хранить объекты в локальном хранилище.JQuery Mobile JSON Stringify

Каждый элемент должен содержать следующую информацию: наименование, количество элементов и логическое значение is_bought. Я хочу сохранить все данные элементов в одну строку JSON. Данные элементов вводятся пользователем с другой страницы.

Моя проблема 1) Как элементы могут храниться в локальном хранилище через JSON stringify.

2) Как данные элементов могут быть получены из строки JSON для представления в список.

+0

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

ответ

2

Первый: Если я понял вас правильно, вы имеете структуру объекта (JSON), как:

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

Если нет (в вопросе у вас нет ключа (имя) для ваших переменных) вашей структуры сусла Похоже, я показал, что у меня есть доступ к каждой переменной в объекте.

Второй: О localStorage. Он ограничивается обработкой только пар строк/значений, поэтому вы не можете просто сохранить в нем объект. Вы должны использовать JSON.stringify() для анализа вашего объекта в строке и сохранения в localStorage, затем, после извлечения, используйте JSON.parse(), чтобы проанализировать его. Код может выглядеть следующим образом:

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: ХРАНИТЬ НЕСКОЛЬКО ЭЛЕМЕНТЫ

Таким образом, если речь идет о хранении нескольких элементов и различать их, и , если имя вашего элемента являетсяуникальным, и вы знаете, какой предмет куплен, вы можете сохранить их в localStorage с ключом имени элемента, например

// 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

Что происходит с вашим кодом, если есть более чем один элемент? :) –

+0

Ох .. Извините. Я неправильно понял вопрос :) –

+0

Большое спасибо за ваши отзывы. Однако как можно динамически вводить данные в список объектов объекта? – Stephen

Смежные вопросы