按下按钮后,我想将一个项目(嵌套JSON)保存到新的Array中并将其存储到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”始终为空。我需要它作为数组。
答案 0 :(得分:3)
Set
的 Get
和 localstorage
方法因使用的服务而异
1. HTML5 localStorage -如果您直接使用HTML5 localStorage,则应使用localStorage.getItem
和localStorage.setItem
2.localstorage仅限于存储字符串键/值对。在使用设置并从localstorage获取数据时,请使用JSON.stringify和JSON.parse
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
和 {{1 }} 将起作用。
答案 1 :(得分:0)
将this.storage.set('favouriteData', this.cardfavouriteArray);
更改为localStorage.set('favouriteData', JSON.stringify(this.cardfavouriteArray));
(这是按角度预先定义的方法)。还要对数组进行字符串化。
答案 2 :(得分:0)
像这样在本地存储中设置数组:
localStorage.setItem('favouriteData', JSON.stringify(this.cardfavouriteArray));
像这样从本地存储中获取数组:
var data = JSON.parse(localStorage.getItem('favouriteData'));
说明:这是因为localstorage无法存储对象,所以它以字符串格式存储。因此,我们需要JSON.stringify对象。此外,localStorage具有函数名称setItem和getItem,如以下定义:http://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage。当从本地存储中获取字符串时,我们需要JSON.parse将其转换回对象。
您正在使用this.storage.set和this.storage.get。目前尚不清楚您使用的是哪个库,但是我提到的代码是否可以在Angular或任何框架中使用。由于localStorage.setItem和localStorage.getItem是纯JavaScript。