angular - 购物 list 未列出/保存超过 1 个食谱

标签 angular typescript ionic-framework ionic2

我的目标是

  1. 创建一个从 API 中提取食谱的购物 list 。
  2. 将成分从一页转移到另一页。
  3. 添加超过 1 个时刷新/加载数据的页面。

我遇到的问题是

  1. 仅加载一组配料
  2. 清除功能将不允许再添加。

食谱页面

// Loading Recipes 
/////////////////////////////////////////////////////////////////////

loadDetails1(id){
    this.apiAuthentication.loadDetails(id)
    .then(data => {
        this.api = data;
    });
}

// Add to Shopping List 
///////////////////////////////////////////////////////////////////// 

submit(api) {

    let toast = this.toastCtrl.create({
      message: 'Added to shopping list',
      duration: 1000
    });

    console.log(this.api);

    this.storage.get('myData').then((api) => {

        // add one igredient to the ingredientLines object
        // if it's still a string use JSON.parse() on it
        this.storage.set('myData', api).then(result =>{
            toast.present();
            console.log(api);
        }); 
    }); 
}

HTML

<h1 (click)="submit(api?.ingredientLines)">Add to shopping list</h1> 
<ul>
    <li *ngFor="let item of api?.ingredientLines"><span>{{item}}</span></li>
</ul>

购物 list 页面

getData() {
  this.storage.get('myData').then((data => {
      this.api = data;
      console.log(data);

      setInterval(() => {
        console.log(data);
      },5000);
  }));
}

HTML

<ion-content padding>
    <ion-card>
        <ion-card-header>
            {{api?.name}}
        </ion-card-header>

        <ion-list>
            <ion-item>
                <ul>
                    <li *ngFor="let item of api?.ingredientLines">
                        <ion-label>{{item}}</ion-label>
                        <ion-checkbox></ion-checkbox>
                    </li>
                </ul>
            </ion-item>
        </ion-list>
        <button ion-button block full color="danger" (click)="clear(item)">Remove</button>
    </ion-card>
</ion-content>

购物 list 页面看起来像enter image description here

视觉中显示的错误是 https://www.youtube.com/watch?v=BDS_XTdw2S0 您可以看到,当我将商品添加到购物 list 时,它不会更新,直到我关闭应用程序并重新启动它。也只有 1 项。

最佳答案

您正在覆盖您的存储空间,因此只显示 1 个。

应该是这样的,试试用typespromises

public submit(ingredientLines: any) {

let toast = this.toastCtrl.create({
    message: 'Added to shopping list',
    duration: 1000
});

this.storage.get('myData').then((ingredientLines) => {

    console.log(ingredientLines);

    // add one igredient to the ingredientLines object
    // if it's still a string use JSON.parse() on it
    this.storage.set('myData', ingredientLines).then(result =>{
        toast.present();
    }); 
}); 
}

所以

  1. 从存储中获取数据

  2. 将新项目应用于数据

  3. 设置新数据到存储

关于angular - 购物 list 未列出/保存超过 1 个食谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42977073/

相关文章:

javascript - 使用 Typescript 进行接口(interface)类型检查

css - ionic - 当 ionic 图标较大时, ionic 元素文本不垂直居中

javascript - Ionic 侧面菜单切换事件

Angular 2 innerHTML(点击)绑定(bind)

javascript - 如何在 Angular 中获取绝对定位元素的宽度

javascript - 我是否需要使用 TypeScript 在 JQueryStatic 定义文件中声明所有 JQuery 原型(prototype)?

angular - Internet Explorer 11,ECMAScript 对象属性分配问题

ios - PWA 应用程序 - 使用 Angular 6 在本地存储中存储图像和视频

angular - 按钮@Directive通过Angular中的@Input绑定(bind)禁用属性

html - 在 Cordova/Ionic 中放大特定的 div