从提供程序将某个变量更改为true

时间:2019-01-19 17:39:14

标签: angular angular-services

在离子应用程序中,我想向购物车中添加某种产品,然后在页面上列出用户购买的所有产品。

我已经实现了提供程序。

服务文件ProductProvider

load() {
    return this.products = [
      { id: 1, name: "McFlurry", price: 2, enseigne: "McDonalds", inBag: false },
      { id: 2, name: "Potatoes", price: 3, enseigne: "McDonalds", inBag: false },
      { id: 3, name: "BigMac", price: 4, enseigne: "KFC", inBag: false },
      { id: 4, name: "Nuggets", price: 3, enseigne: "KFC", inBag: false }
    ];
}

添加项目的功能(我从上一页的navparams获得了这些值)

addToBasket(name: string, price: number) {
    this.event.publish("cart:updated", this.count);
    productProvider.setInbag(true)
    this.viewCtrl.dismiss();
}

我不知道如何从数组中选择某个对象以将inBag变量设置为true。

1 个答案:

答案 0 :(得分:1)

您将必须将该名称传递给productProvider.setInbag(true)函数:

例如:服务文件ProductProvider

setInbag(name: string, inbag: boolean) {
  var product = this.products.find(f => f.name === name);
  product.inBag = inbag;

}

find方法存在于数组中,并将返回谓词(f => f.name === name)为true的第一项。

附带说明:

我看到您的产品具有id属性。您应该使用它来传递所选产品,而不是其名称。产品可能针对不同的系有相同的名称。