如何使用 *ngFor 指令从 Ionic 3 上的存储中获取数据(Cordova、Ionic 3、Angular 5)
How to fetch data using *ngFor directive from storage on Ionic 3 (Cordova, Ionic 3, Angular 5)
我正在使用 Ionic 的存储来保存具有多个属性的 javascript 数据 object。我正在尝试创建一个可以从离子存储中获取数据的收藏夹列表。
这是我的数据 provider TS 文件。
private items: any[] = [
{
"name": "item 01",
"description": "this is item 01",
"id": "1"
},
{
"name": "item 02",
"description": "this is item 02",
"id": "2"
},
{
"name": "item 03",
"description": "this is item 03",
"id": "3"
},
{
"name": "item 04",
"description":"this is item 04",
"id":"4"
}
]
我正在使用按钮将项目保存在我的 html 文件中。
HTML 主文件使用 *ngFor let 指令从提供程序中获取项目。
主要 HTML:
<div *ngFor="let item of items">
<h2>{{item.name}}</h2>
<p>{{item.description}}</p>
<button (click)="saveToFav(item)">Save to favorites</button>
</div>
主 TS 文件:
savToFav(item) {
this.storage.set(this.item.id, this.item);
}
这会将项目及其属性保存到 Ionic 存储中。我可以看到它出现在我的浏览器的检查 -> 应用程序页面上。
我正在尝试从离子存储中获取项目到收藏夹 HTML 页面。
最喜欢的 HTML 页:
<div *ngFor="let item of items">
<h2>{{item.name}}</h2>
<p>{{item.description}}</p>
<button (click)="remove(item)">Remove from favorites</button>
</div>
最喜欢的 TS 文件
this.platform.ready().then(() => {
this.storage.get(this.item);
});
但这真的不会在最喜欢的 html 页面上加载任何内容..
我应该怎么做才能将存储在 Ionic 存储中的每个项目都提取到收藏夹 HTML 页面?
提前致谢,
您以错误的方式使用存储获取和设置功能,所有收藏的项目必须存储在单个键中,以便以后需要时您可以拥有所有收藏的列表。应该像下面这样
savToFav(item) {
this.storage.get('favoritesList')
.then((fav)=>{
if(fav == null){
fav = [];
}
//This will fetch the old items and push the new item in array
fav.push(item); return fav;
})
.then((fav)=>{
//this will store the new update favorite list array in storage.
this.storage.set('favoritesList',fav);
})
}
//Favorite ts file you can use it like below
this.storage.get('favoritesList').then((fav)=>{
//you can asssing it any variable and use in your *ngFor loop
this.myFavList = fav;
})
我正在使用 Ionic 的存储来保存具有多个属性的 javascript 数据 object。我正在尝试创建一个可以从离子存储中获取数据的收藏夹列表。
这是我的数据 provider TS 文件。
private items: any[] = [
{
"name": "item 01",
"description": "this is item 01",
"id": "1"
},
{
"name": "item 02",
"description": "this is item 02",
"id": "2"
},
{
"name": "item 03",
"description": "this is item 03",
"id": "3"
},
{
"name": "item 04",
"description":"this is item 04",
"id":"4"
}
]
我正在使用按钮将项目保存在我的 html 文件中。 HTML 主文件使用 *ngFor let 指令从提供程序中获取项目。
主要 HTML:
<div *ngFor="let item of items">
<h2>{{item.name}}</h2>
<p>{{item.description}}</p>
<button (click)="saveToFav(item)">Save to favorites</button>
</div>
主 TS 文件:
savToFav(item) {
this.storage.set(this.item.id, this.item);
}
这会将项目及其属性保存到 Ionic 存储中。我可以看到它出现在我的浏览器的检查 -> 应用程序页面上。
我正在尝试从离子存储中获取项目到收藏夹 HTML 页面。
最喜欢的 HTML 页:
<div *ngFor="let item of items">
<h2>{{item.name}}</h2>
<p>{{item.description}}</p>
<button (click)="remove(item)">Remove from favorites</button>
</div>
最喜欢的 TS 文件
this.platform.ready().then(() => {
this.storage.get(this.item);
});
但这真的不会在最喜欢的 html 页面上加载任何内容..
我应该怎么做才能将存储在 Ionic 存储中的每个项目都提取到收藏夹 HTML 页面?
提前致谢,
您以错误的方式使用存储获取和设置功能,所有收藏的项目必须存储在单个键中,以便以后需要时您可以拥有所有收藏的列表。应该像下面这样
savToFav(item) {
this.storage.get('favoritesList')
.then((fav)=>{
if(fav == null){
fav = [];
}
//This will fetch the old items and push the new item in array
fav.push(item); return fav;
})
.then((fav)=>{
//this will store the new update favorite list array in storage.
this.storage.set('favoritesList',fav);
})
}
//Favorite ts file you can use it like below
this.storage.get('favoritesList').then((fav)=>{
//you can asssing it any variable and use in your *ngFor loop
this.myFavList = fav;
})