2017-07-08 125 views
1

我使用离子3储存。离子3带储存

首先,我导入存储在app.module.ts

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

imports: [ 
IonicStorageModule.forRoot() 
] 

我开发电子商务app.If我使用的存储添加到任何产品到购物车。

这是我购物车页面的代码。

<ion-row class="apply-coupon" *ngFor="let p of Cartproducts;let i=index"> 
<ion-col col-4> 
<img src="{{p.P_IMAGES[0].URL}}" alt="product2"> 
</ion-col> 
<ion-col col-8> 
<h1>{{p.P_TITLE}}</h1> 
<p class="subtitle">Subtitle</p> 
<p class="code">Code: 123</p> 
<div> 
<button (click)="cancel(i)">Cancel X</button> 
</div> 
</ion-col> 
</ion-row> 

this.items.push(item); 
this.storage.set('products',this.items); 

项目是一个产品detail.and我已显示购物车的数量。

this.storage.get('products').then((data) => { 
    if(data != null) 
    { 
     this.Cartproducts=data; 
     console.log(this.Cartproducts); 

    } 
    }); 

这里是我的安慰值。

[ 
    { 
     'Product_title':'Product name', 
     'Product desc':'product dec', 
     'id':1 
    }, 
    { 
     'Product_title':'Product name', 
     'Product desc':'product dec' 
     'id':2 
    } 
] 

如果我需要删除最后一个产品。

this.Cartproducts.splice(i, 1); 
console.log(this.Cartproducts); 
this.storage.remove('products'); 
this.storage.set('products',this.Cartproducts); 

这是我的安慰值。

[ 
    { 
     'Product_title':'Product name', 
     'Product desc':'product dec', 
     'id':1 
    } 
] 

我删除'products'的存储值我再次设定值products

我我需要另一个product.so我要的产品页面并添加产品。

但我的结果是

[ 
    { 
     'Product_title':'Product name', 
     'Product desc':'product dec', 
     'id':1 
    }, 
    { 
     'Product_title':'Product name', 
     'Product desc':'product dec' 
     'id':2 
    }, 
    { 
     'Product_title':'Product name', 
     'Product desc':'product dec' 
     'id':3 
    } 
] 

,但实际上,我删除未设置为存储为什么第二product.Did?

请咨询我,

感谢

+0

很显然,当你移动到产品页面你没有更新你的模型值其中你正在推动你的数据。可能是离子正在缓存应用程序性能 – vaibhavmaster

+0

谢谢你的答复。我有产品页面上显示的产品清单。同样,我不明白你的问题 – ANISUNDAR

+0

你也可以添加产品页面添加代码吗? – vaibhavmaster

回答

3

尝试

this.storage.get('products').then((data) => { 
    if(data == null) 
    { 
     data=[]; 
    } 
this.items=data;//re-initialize the items array equal to storage value 
this.items.push(item); 
this.storage.set('products',this.items); 
    }); 

,而不是

this.items.push(item); this.storage.set('products',this.items) 
+0

感谢您的患者。我有一个疑问。我的问题是项目已经是数组值,长度是3.为什么我再次推动阵列? – ANISUNDAR

+0

您已经将项目推送到this.items – vaibhavmaster

+0

谢谢。我的问题已修复。但我又遇到了另一个问题。如果将任何产品添加到购物车,有时候值不确定为什么? – ANISUNDAR