После нажатия кнопки я хотел бы сохранить элемент (вложенный JSON) в новый массив и сохранить его в localstorage.
addFavourite(card) {
console.log(JSON.stringify(card));
var cards = [];
this.cardfavouriteArray.push.apply(cards, card)
this.storage.set('favouriteData', this.cardfavouriteArray);
}
getData() {
var data = this.storage.get('favouriteData');
if(data){
this.storage.get('favouriteData').then((val) => {
console.log('test', JSON.stringify(val));
});
}
Я не получаю ошибки, но "test" всегда пуст. Мне нужно это как массив.
Метод Set
и Get
для localstorage
зависит от того, какую службу вы используете
1. HTML5 localStorage - если вы используете локальную локальную структуру HTML5 напрямую, вы должны использовать localStorage.getItem
и localStorage.setItem
2.localstorage ограничивается хранением только строк с ключом/значением. Используйте JSON.stringify и JSON.parse при использовании настроек и получения из localstorage
addFavourite(card) {
console.log(JSON.stringify(card));
var cards = [];
this.cardfavouriteArray.push.apply(cards, card)
this.storage.setItem('favouriteData', JSON.stringify(this.cardfavouriteArray));
}
getData() {
var data = this.storage.get('favouriteData');
if(data){
this.storage.getItem('favouriteData').then((val) => {
console.log('test', JSON.parse(val));
});
}
3. ng2-webstorage. В случае ng2-webstorage
this.storage.retrieve
и this.storage.store
будет работать.
Измените this.storage.set('favouriteData', this.cardfavouriteArray);
на localStorage.set('favouriteData', JSON.stringify(this.cardfavouriteArray));
(Это предопределенный метод угловым). Также стройте массив.
Установите массив в локальном хранилище следующим образом:
localStorage.setItem('favouriteData', JSON.stringify(this.cardfavouriteArray));
Получите массив из локального хранилища следующим образом:
var data = JSON.parse(localStorage.getItem('favouriteData'));
Объяснение: Это потому, что localstorage не может хранить объект, он хранится в строчном формате. Поэтому нам нужно JSON.строить объект. Также localStorage имеет имя функции setItem и getItem, как определено здесь: http://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage. Когда мы получаем строку из localstorage, нам нужно JSON.parse преобразовать ее обратно в объект.
Вы используете this.storage.set и this.storage.get. Неясно, какую библиотеку вы используете, но код, который я упомянул, будет работать в Angular или любой системе. Поскольку localStorage.setItem и localStorage.getItem - это чистый javascript.