【问题标题】:Vue.js, conditionally adding item to an arrayVue.js,有条件地将项目添加到数组
【发布时间】:2019-03-28 16:43:41
【问题描述】:

我有一个硬编码的菜单项,我在其中循环以在表格中显示其内容,然后我为每个项目都有一个添加按钮。 我想要做的是允许用户将所选项目添加到他的购物车中,我在我的数据函数中将其初始化为一个空数组,所以首先我要验证用户购物车中不存在所选项目,所以如果它不存在,它将被添加,如果存在,我想将其数量增加一。 请在根 app.vue 组件中的 codesandbox 中找到我的代码来实现此功能, 如果需要,请在下面的评论中要求进一步澄清。谢谢

【问题讨论】:

  • 请将您的代码放在您的问题中,使用指向其他页面的链接现在可以使用,但将来其他人访问此问题时将无法使用。
  • 我昨天做了,问题不够清楚,没有人回答,在stackoverflow-post这里找到它
  • 如果是您本人提出的问题,如果您取消评分,我将不胜感激
  • 那你为什么认为这会比你之前的问题更清楚?
  • 因为这是一个 vue 应用程序设置,这是我的情况,查看器可以运行代码并获得结果!我试图重新表述这个问题,以便更清楚

标签: javascript arrays vue.js javascript-objects


【解决方案1】:

问题出在 forEach 里面的 addItem 函数中。请查找更新后的代码。

addItem(pizza, options) {
      let selectedPizza = {
        name: pizza.name,
        siza: options.size,
        price: options.price,
        quantity: 1,
        id: options.size === 'L' ? pizza.id.split('').reverse().join('') : pizza.id
      }

      if(this.cart.length > 0) {
        let exist = false;
        for(let index = 0; index < this.cart.length; index++) {
          let item = this.cart[index];
          if(item.id === selectedPizza.id && item.size === selectedPizza.size){
            item.quantity++;
            this.response ='Item already exist in the cart';
            exist = true;
            break;
          } 
        }
        if(!exist) {
            this.response = ''
            this.cart.push(selectedPizza)
        }
      } else {
        this.cart.push(selectedPizza)
        console.log('item is added to an empty cart')
      }
    }

如果当前迭代的披萨不等于 selectedPizza,您在 forEach 中多次将披萨添加到购物车中。

【讨论】:

  • 哈利路亚兄弟:D,非常感谢。这拯救了我的一天
猜你喜欢
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
相关资源
最近更新 更多