Мне просто нужно сохранить массив в localStorage
и продолжать добавлять элементы в этот массив, чтобы я мог получить этот сохраненный массив в своем приложении. Это должно быть очень просто сделать с модулем локального хранилища Angular, но это меня поразило немного беспокоит, и я надеюсь получить некоторую помощь в этом.
Ниже приведен угловой код, который я использую для хранения queries
в localStorage
с использованием модуля angular-local-storage
:
.factory('QueryService', ['localStorageService', function(localStorageService) {
var queries = [];
var factory = {};
factory.addQuery = function(query) {
queries.push(query);
localStorageService.set('queries', queries);
return localStorageService.get("queries");
};
return factory;
}])
Каждый раз, когда я добавляю запрос в массив queries
, я получаю в результате только последний добавленный элемент. Таким образом, localStorageService.get("queries")
дает мне последний элемент, добавленный в массив queries
.
Может ли кто-нибудь помочь мне понять, почему я получаю только последний элемент, который я добавляю в возвращаемый массив queries
?
EDIT: После каждого элемента, который я добавляю в массив queries
, я обновляю браузер.
stringify
иparse
создает для вас ваш массив. Насколько я понимаю, localStorage в настоящее время поддерживает только строки. Поэтому необходимо преобразование (обычно с использованиемJSON.stringify
иJSON.parse
). Я написал это в предыдущем ответе (вне из AngularJS). Не уверен, что готовый модуль покрывает это для вас или нет... - person War10ck   schedule 09.10.2014queries
очищает массивqueries
? - person skip   schedule 09.10.2014queries
хранились все данные (старые и новые), вам нужно сначала попытаться получить массив запросов из localStorage. Если он существует, извлеките существующий контент в массив, обновите массив и поместите все содержимое обратно в localStorage. Если его нет в localStorage (указывая, что это первая итерация процесса), создайте массив, заполните новое значение и поместите его в localStorage. Для всех последующих запросов вам нужно будет повторить первый шаг. - person War10ck   schedule 09.10.2014