首页 文章

如何将数据数组对象保存到离子SQlite存储(TypeScript,Angular 5,Ionic 3)

提问于
浏览
0

我正在尝试使用Ionic SQlite存储将具有许多属性的数据数组对象保存到收藏列表中 .

例如,我在数据提供程序中有一个数据数组:

data.ts

private options: any[] = [

        {
          "name": "option 01",
          "website": "www.google.com",
          "about": "choose this option 01",
          "id": "1"
        },

        {
          "name": "option 02",
          "website": "www.yahoo.com",
          "about": "choose this option 02",
          "id": "2"
        },
        {
          "name": "option 03",
          "website": "www.bing.com",
          "about": "choose this option 03",
          "id": "3"
        },
        {
          "name": "option 04",
          "website": "www.stackoverflow.com",
          "about": "choose this option 04",
          "id": "4"
        }
    ]

我在 home html 页面中调用这些数据对象,该页面可以选择保存到收藏夹列表 .

<ion-card *ngFor="let option of options">
  <h1>{{option.name}}</h1>
  <h1>{{option.about }}</h1>
<h4>{{option.website}}</h4>

<button ion-button block (click)="saveToFavorite()">Save to Favorite List</button>

<button ion-button block (click)="removeFromFavorite()">Remove from Favorite List</button>
</ion-card>

这里的文件不完整 home.ts

import { Storage } from '@ionic/storage';

const STORAGE_KEY = 'favoriteOptions';

  saveToFavorite(option) {

    this.storage.set();
  }

  removeFromFavorite(option) {
   this.storage.remove();
  }

我想saveToFavorite()将选项数据数组对象保存到喜欢的选项存储键,所以我可以在 favoriteList HTML 页面上加载它们:

<ion-content>
    <div *ngFor="let option of options">
        <h1>{{option.name}}</h1>
        <p>{{option.about}}</p>
        <button ion-button block (click)="removeFromFavorite()">Remove from Favorite List</button>
    </div>
</ion-content>

favoriteList ts 文件:

getAllFavoriteOptions() {
    return this.storage.get(STORAGE_KEY);
  }

  removeFromFavorite(option) {
   this.storage.remove();
  }

不知怎的,我有点失落 . 请更正我的ts文件代码 .

提前致谢!

1 回答

  • 1

    制作保存收藏夹的功能:

    addFavorite(favorite:any):void{
      let favorites = this.storage.get('favorites');
      if(favorites){
        favorites.push(favorite);
        this.storage.set('favorites', favorites);
      }else{
        favorites = [];
        favorites.push(favorite);
        this.storage.set('favorites',favorites);
      }
    

    然后获取收藏夹添加此功能:

    getFavorites():any{
      let favorites = this.storage.get("favorites");
      return favorites;
    }
    

    for ionic :如果您使用 @ionic/storage 然后加载项目使用async pipe

    getFavorites():Promise<any>{
      let favorites = this.storage.get("favorites");
      return favorites;
    }
    

    然后在* ng中访问它们:执行此操作:

    <div *ngFor="let item of getFavorites() | async">
          <div>{{item.name}}</div>
    </div>
    

相关问题