Добавление свойств к объектам, которые уже хранятся в localStorage - PullRequest
0 голосов
/ 19 мая 2011

У меня есть объект в localStorage, что-то вроде:

{"one": "oneone", "two": "twotwo"}

Вы получаете изображение.

По какой-то причине попытка добавить больше объектов к объекту не будет работать.Если я хочу добавить «три»: «threethree», он игнорирует это, и когда я обновляю область хранения в Opera Dragonfly, он показывает тот же старый объект, без изменений ...

Кто-нибудь знает, как добавить кобъекты на лету?Или мне придется добавить копию объекта в моем коде, затем очистить старый объект из localStorage и сохранить обновленный?Я вижу, что это единственный путь, но кажется, что это может быть немного некрасиво ... Идеи, пожалуйста!: D

Ответы [ 2 ]

0 голосов
/ 01 октября 2014

Если этот объект достигнет какого-либо значительного размера, то его постоянный анализ и повторная стратификация при каждом небольшом изменении станут неэффективными. Лучше использовать http://rhaboo.org, который хранит большие вложенные объекты в localStorage, но с отдельной записью localStorage для каждого значения терминала. Вся магия скрыта под синтаксисом, подобным этому:

var store = Rhaboo.persistent('Some name');
store.write('count', store.count ? store.count+1 : 1);

store.write('somethingfancy', {
  one: ['man', 'went'],
  2: 'mow',
  went: [  2, { mow: ['a', 'meadow' ] }, {}  ]
});  
store.somethingfancy.went[1].mow.write(1, 'lawn');
console.log( store.somethingfancy.went[1].mow[1] ); //says lawn

Кстати, я написал это.

0 голосов
/ 01 августа 2011

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

Как вы говорите, это немного уродливо, но вы можете создать функцию для этого

function mergeLocalStorage(key, obj){
    var newObj = JSON.parse(localStorage.getItem(key));
    for (var k in obj){
        newObj[k] = obj[k];
    }
    localStorage.setItem(key, JSON.stringify(newObj));
    return newObj;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...