用Vue实现简单购物车功能

这是最简单的购物车功能,或许有时间的话可以添加点功能

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Vue基础 -- 购物车</title>
  <style>
  </style>
</head>

<body>
  <div id="app">
    <table>
      <thead>
        <tr>
          <th>商品编号</th>
          <th>商品名称</th>
          <th>商品单价</th>
          <th>商品数量</th>
          <th>商品总价</th>
          <th>商品操作</th>
        </tr>
      </thead>
      <tbody>
        <!-- 
          some()方法是只要一个成员的返回值是true,则整个some方法的返回值就是true,否则返回false。
          every()方法是所有成员的返回值都是true,整个every方法才返回true,否则返回false。 
          它们接受一个函数作为参数,所有数组成员依次执行该函数。该函数接受三个参数:当前成员、当前位置和整个数组,然后返回一个布尔值。
          some和every方法还可以接受第二个参数,用来绑定参数函数内部的this变量。
        -->
        <tr v-if="goodsData.every(item => item.count == 0)">
          <td>购物车为空</td>
        </tr>
        <template v-for="(item,index) in goodsData">
          <tr :key = "item._id" v-if="item.count > 0">
            <td>{{item._id}}</td>
            <td>{{item.name}}</td>
            <td>{{item.price}}</td>
            <td>
              <button @click="item.count--">-</button>
              <span>{{item.count}}</span>
              <button @click="item.count++">+</button>
            </td>
            <td>{{item.price * item.count}}</td>
            <td>
              <!-- 
                splice()方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。
                splice()的第一个参数是删除的起始位置(从0开始),第二个参数是被删除的元素个数。
               -->
              <button @click="goodsData.splice(index,1)">删除</button>
            </td>
          </tr>
        </template>
       
      </tbody>
    </table>
    <p>合计: ¥ {{totalPrice()}} 元</p>
  </div>
  <script src="./js/vue.js"></script>
  <script>
    new Vue({
      el: "#app",
      data() {
        return {
          goodsData: [
            {
              _id: 1,
              name: '苹果',
              price: '10',
              count: 20
            },
            {
              _id: 2,
              name: '香蕉',
              price: '20',
              count: 10
            },
            {
              _id: 3,
              name: '梨',
              price: '10',
              count: 15
            },
            {
              _id: 4,
              name: '葡萄',
              price: '10',
              count: 1
            },
          ]
        }
      },
      // 方法放的地方
      methods: {
        // 封装计算总价
        totalPrice(){
          // reduce()方法依次处理数组的每一个成员,最终累计为一个值
          const totalPrice = this.goodsData.reduce((sum,item) => {
            console.log(sum,item);
            return sum + item.price * item.count;
            
          },0);
          return totalPrice;
        }
      }
    });
  </script>

</body>

</html>

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单Vue购物车示例代码。假设您已经有了商品列表和每个商品的价格,您需要实现以下功能: 1. 点击“加入购物车”按钮,将商品添加购物车中。 2. 显示购物车中的商品数量和总价格。 3. 可以从购物车中删除商品。 下面是一个简单Vue购物车示例代码: ```html <!DOCTYPE html> <html> <head> <title>Shopping Cart</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> <h2>商品列表</h2> <ul> <li v-for="(item, index) in items" :key="index"> {{ item.name }} - {{ item.price }} <button @click="addToCart(index)">加入购物车</button> </li> </ul> <h2>购物车</h2> <p>数量:{{ cartItems.length }}</p> <p>总价:{{ getTotalPrice() }}</p> <ul> <li v-for="(item, index) in cartItems" :key="index"> {{ item.name }} - {{ item.price }} <button @click="removeFromCart(index)">删除</button> </li> </ul> </div> <script> var app = new Vue({ el: '#app', data: { items: [ {name: '商品1', price: 10}, {name: '商品2', price: 20}, {name: '商品3', price: 30}, {name: '商品4', price: 40}, {name: '商品5', price: 50}, ], cartItems: [], }, methods: { addToCart: function(index) { this.cartItems.push(this.items[index]); }, removeFromCart: function(index) { this.cartItems.splice(index, 1); }, getTotalPrice: function() { var totalPrice = 0; for (var i = 0; i < this.cartItems.length; i++) { totalPrice += this.cartItems[i].price; } return totalPrice; }, }, }); </script> </body> </html> ``` 在这个示例中,我们首先声明了一个Vue实例,并定义了两个数据属性:`items`和`cartItems`。`items`是商品列表,包含每个商品的名称和价格。`cartItems`是购物车列表,包含当前加入购物车的商品。 在`addToCart`方法中,我们将所选商品添加购物车列表中。在`removeFromCart`方法中,我们可以从购物车中删除某个商品。在`getTotalPrice`方法中,我们计算购物车中所有商品的总价格。 在HTML中,我们使用Vue的指令`v-for`对商品列表和购物车列表进行循环,并使用`v-bind`将商品的名称和价格绑定到HTML元素上。我们还使用`v-on`指令将点击事件绑定到“加入购物车”按钮和“删除”按钮上,以便在单击按钮触发相应的方法。最后,我们使用Vue的双向数据绑定将购物车中商品数量和总价绑定到HTML元素上,以便实更新。 这是一个非常基本的Vue购物车示例,您可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值