angular - 离子存储值不显示,除非我重新加载页面
问题描述
大家好,我需要你的帮助。我正在尝试从存储中获取一个显示我的购物车项目的数组,但我唯一的问题是在我重新加载页面之前不会显示存储值。请帮我。谢谢。
购物车.ts
cartData: any = [] ;
baseProducts: any =[] ;
constructor(private changeRef: ChangeDetectorRef, private storage: Storage) {
this.storage.forEach((data)=>{
let storedProducts = {};
let parseFromStorage = JSON.parse(data);
this.cartData.push(parseFromStorage);
storedProducts['product_id'] = parseFromStorage.id;
storedProducts['price'] = parseFromStorage.price;
storedProducts['quantity'] = 1;
this.baseProducts.push(storedProducts);
}).then(()=>{
this.changeRef.detectChanges();
console.log('parse product', this.baseProducts);
});
}
购物车.html
<ion-row *ngIf="cartData.length > 0">
<ion-col size="12" *ngFor="let item of cartData; let j = index">
<ion-card style="margin-top: 0; margin-bottom: 0;">
<ion-list class="ion-no-padding">
<ion-item>
<ion-thumbnail slot="start" *ngIf="cartData">
<img [src]="item.images[0].src">
</ion-thumbnail>
<ion-label>
<h4><b>{{ item.name }}</b></h4>
<p>${{baseProducts[j].price * baseProducts[j].quantity | number:'1.0-0'}}
</p>
</ion-label>
<ion-icon color="danger" name="trash-bin-outline" (click)="removeFromCart(j, item)"></ion-icon>
</ion-item>
</ion-list>
</ion-card>
</ion-col>
</ion-row>
解决方案
将代码添加到 ionViewWillEnter() 中。它每次都会调用你的存储。
constructor(private changeRef: ChangeDetectorRef, private storage: Storage) { }
//Writen code in below will execute everrytime.
ionViewWillEnter() {
this.cartData = [];
this.baseProducts = [];
this.storage.forEach((data)=>{
let storedProducts = {};
let parseFromStorage = JSON.parse(data);
this.cartData.push(parseFromStorage);
storedProducts['product_id'] = parseFromStorage.id;
storedProducts['price'] = parseFromStorage.price;
storedProducts['quantity'] = 1;
this.baseProducts.push(storedProducts);
}).then(()=>{
this.changeRef.detectChanges();
console.log('parse product', this.baseProducts);
});
}
推荐阅读
- yaml - 如何将注释掉的密钥保存到 yaml
- javascript - 如何在不覆盖先前状态的情况下将状态更新为对象数组
- javascript - 如何将 1 个数组中的 2 个数据组合成不同的值?
- python - 二次方程:TypeError:一元操作数类型错误-:'str'
- python - Tkinter: SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
- python-3.x - ImportError:无法从“sklearn.preprocessing”导入名称“序列”
- c# - 如何将表示 Unicode 字符的数字(大于 0xFFFF)转换为 C# 中的等效字符串
- haskell - GHC 中如何实现整数比较?
- ios - iPhone 13( iOS 15.0 ) 加载页面出错,域NSURLErrorDomain,错误代码1001,描述:请求超时
- node.js - npm start 向其他用户启动进程