【问题标题】:Change a certain variable to true from a provider从提供者将某个变量更改为 true
【发布时间】:2019-01-20 01:57:05
【问题描述】:

在我的 ionic 应用程序中,我想将某个产品添加到我的购物车中,然后在页面中列出用户已购买的所有产品。

我已经实现了一个提供者。

服务文件 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。

【问题讨论】:

    标签: angular angular-services


    【解决方案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) 为真的第一项。

    附注:

    我看到您的产品有一个 id 属性。您应该使用它来传递选定的产品而不是它的名称。对于不同的 enseigne,产品可能具有相同的名称。

    【讨论】:

    • 谢谢你,这正是我想要的。我应该使用 id 而不是 name。
    猜你喜欢
    • 2018-02-04
    • 2018-10-16
    • 2013-02-07
    • 2017-10-27
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多