Vue js 2列表渲染问题

时间:2017-07-07 05:06:46

标签: javascript vue.js vuejs2 nuxt.js

我在vue js 2中做一个简单的购物车应用时遇到了一个问题 这是我的代码:

空白购物车项目数组,当我按下添加到购物车按钮,然后该特定产品将被推入此数组。

data () {
    return {
      cartItems: []
    }
}

添加到购物车方法:

methods: {
    addToCart (product) {
      product.quantity += 1
      this.cartItems.push(product)
    }
}

模板视图:

<ul>
   <li v-for="item in items">
        <pre>
            {{item.name}} -- {{item.quantity}}
        </pre>
    </li>
</ul>
在浏览器中,我得到了这个:

right side 1 and 2 value is the quantity of that product

注意:右侧1和2值是该产品的数量 但是我想要这样的东西。

right side 1 and 2 value is the quantity of that product

注意:右侧1和2值是该产品的数量

如果我使用vue js 1而不是vue js 2,那么相同的代码会给我浏览器视图,就像我附加的第二个截图一样。

请任何人帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

问题是您将产品推送到阵列两次。 检查产品是否存在于cartItems数组中,否则 - 添加,否则 - 更新产品数量

答案 1 :(得分:1)

你是如何创造新产品的?在调用addToCart时是否引用了同一个对象,或者您是否进行了某种深层复制或扩展?如果您多次添加相同的参考,它们将具有相同的数量。

v-for="item in items"如果您不使用伪代码作为示例,则此值应为ìf cartItems

答案 2 :(得分:0)

那是因为您增加产品数量,然后再增加一次将相同产品推入list。您应该检查该项目是否在列表中