Vue案例——购物车案例

本文介绍了一个使用Vue.js实现的购物车应用案例,展示了如何通过Vue的数据绑定和组件更新机制来实时更新购物车中的商品数量及总价。应用中包含了商品列表、购买数量调整、商品移除等功能,并使用过滤器格式化价格。
摘要由CSDN通过智能技术生成

test.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>购物车案例</title>
</head>
<body>
<div id="app">
  <div v-if="books.length">
    <table>
      <thead>
      <tr>
        <th></th>
        <th>书籍名称</th>
        <th>出版日期</th>
        <th>价格</th>
        <th>购买数量</th>
        <th>操作</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="(item, index) in books">
        <td>{{item.id}}</td>
        <td>{{item.name}}</td>
        <td>{{item.date}}</td>
        <!--        使用过滤器来显示价格,格式为 | 过滤器-->
        <td>{{item.price | showPrice}}</td>
        <td>
          <button @click="decrement(index)" :disabled="item.count === 1">-</button>
          {{item.count}}
          <button @click="increment(index)">+</button>
        </td>
        <td>
          <button @click="removeHandle(index)">移除</button>
        </td>
      </tr>
      </tbody>
    </table>
    <h2>总价:{{totalPrice | showPrice}}</h2>
  </div>
  <h2 v-else>购物车为空!!</h2>
</div>
<link rel="stylesheet" href="style.css">
<script src="js/vue.js"></script>
<script src="main.js"></script>

</body>
</html>

main.js

const app = new Vue({
  el: "#app",
  data: {
    books: [
      {
        id: 1,
        name: '《JAVA程序设计》',
        date: '2019-05',
        price: 70.00,
        count: 1
      },
      {
        id: 2,
        name: '《计算机网络》',
        date: '2019-06',
        price: 50.00,
        count: 1
      },
      {
        id: 3,
        name: '《数据结构》',
        date: '2019-05',
        price: 65.00,
        count: 1
      },
      {
        id: 4,
        name: '《编译原理》',
        date: '2019-07',
        price: 60.00,
        count: 1
      }
    ]
  },
  methods: {
    decrement(index) {
      this.books[index].count--;
    },
    increment(index) {
      this.books[index].count++;
    },
    removeHandle(index) {
      this.books.splice(index, 1);
    }
  },
  filters: {
    showPrice(price) {
      return '¥' + price.toFixed(2);
    }
  },
  computed: {
    totalPrice() {
      let total = 0;
      for (let i = 0; i < this.books.length; i++) {
        total += this.books[i].price;
      }
      return total;
    }
  }
})

style.css

table {
    border: 1px solid #e9e9e9;
    border-collapse: collapse;
    border-spacing: 0;
}

th, td {
    padding: 8px 16px;
    border: 1px solid #e9e9e9;
    text-align: left;
}

th {
    background-color: #f7f7f7;
    color: #5c6b77;
    font-weight: 600;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值