02-vue-图书馆购物车的实现

本文详细介绍了如何使用Vue.js实现一个图书馆购物车的功能,包括添加书籍、移除书籍、计算总价等操作。通过HTML和Vue代码展示了版面布局及数据绑定,运用过滤器展示价格,以及在Vue中实现数量加减和移除功能的逻辑。此外,还展示了计算总价的方法和在界面中根据购物车状态动态显示内容。
摘要由CSDN通过智能技术生成

图书馆购物车

一、基本版面的实现

二、功能的实现

1、添加书籍
2 、移出书籍,移出完毕,显示购物车为空
3、计算总价

在这里插入图片描述一、版面的实现
html代码

<div class='app'>
<div class="box" v-if='book.length'>
     <table>
         <thead>
             <th></th>
             <th>书籍名称</th>
             <th>出版日期</th>
             <th>价格</th>
             <th>购买数量</th>
             <th>操作</th>
         </thead>
         <tbody>
             <tr v-for='(item,index) in book'>
                 <td>{{item.id}}</td>
                 <td>{{item.name}}</td>
                 <td>{{item.date}}</td>
                 <td>{{item.price| showprice}}</td>
                 <td>
                     <button @click='decreament(index)' :disabled="item.num <= 1">-</button>
                     {{item.num}}
                     <button @click='increament(index)'>+</button>
                 </td>
                 <td><button @click='move(index)'>移出</button>
                 </td>
             </tr>
         </tbody>
     </table>
 </div>
 <h3 v-else>购物车为空</h3>
 <br>
 <h3>总价:{{totalprice |showprice}}</h3>
</div>

vue代码

 book: [
        {
              id: '1',
              name: "《算法导论》",
              date: "2006-9",
              price: 85.00,
              num: 1
          },
          {
              id: '2',
              name: "《UNIX编程艺术》",
              date: "2006-2",
              price: 59.00,
              num: 1
          },
          {
              id: '3',
              name: "《编程珠玑》",
              date: "2008-10",
              price: 39.00,
              num: 1
          },
          {
              id: '4',
              name: "《代码大全》",
              date: "2006-3",
              price: 128.00,
              num: 1
          }
      ],

将price显示为整数后有两位小数,涉及到了过滤器的使用

 filters: {
            showprice(price) {
                 return '¥' + price.toFixed(2)
             }
          }

二、功能的实现
1、书籍数量的加减,同时书籍的数量低于1本时,按钮便不能使用

increament(index) {
    return this.book[index].num++;
               },
decreament(index) {
    return this.book[index].num--;
			   },

数量低于一本,动态添加disabled属性

:disabled="item.num <= 1"

2、移除,当数量为0时,界面显示购物车为空,

 move(index) {
		 return this.book.splice(index, 1)
             }
 //显示为空,
 在界面使用v-if,v-else

在这里插入图片描述
3、总价的计算,计算属性的使用


totalprice() {
     let price = 0
     for (let i = 0; i < this.book.length; i++) {
         price += this.book[i].price * this.book[i].num
     }
     return price
     }
Vue.js中,我们可以仿照水果购物车的功能来创建一个图书购物车功能。首先,我们需要设置以下几个关键组件: 1. **商品列表** (BookList): 这将显示所有可用的图书,并包含每个图书的名称、作者、价格等信息。点击图书时,可以将其添加到购物车。 ```javascript <template> <ul> <li v-for="book in books" :key="book.id"> <a @click="addToCart(book)">{{ book.title }} - {{ book.author }} - {{ book.price }}</a> </li> </ul> </template> <script> export default { data() { return { books: [] }; }, methods: { addToCart(book) { this.cart.push(book); } } }; </script> ``` 2. **购物车列表** (CartList): 显示已选图书和总价。初始时为空,当有图书加入购物车时更新。 ```html <template> <div v-if="cart.length > 0"> <h2>购物车</h2> <ul> <li v-for="item in cart" :key="item.id"> {{ item.title }} - {{ item.author }} - {{ item.price }} </li> </ul> <p>总价: {{ calculateTotalPrice() }}</p> </div> </template> <script> export default { computed: { totalItems() { return this.cart.length; }, totalPrice() { let sum = 0; this.cart.forEach(item => { sum += item.price; }); return sum; } }, methods: { calculateTotalPrice() { // 算法实现总价格计算 } } }; </script> ``` 3. **购物车状态管理** (CartService): 可以使用Vuex来管理全局的状态,包括购物车的商品列表和总价。 ```javascript // store/index.js import Vue from 'vue'; import Vuex from 'vuex'; const state = { cart: [] }; const mutations = { addItem(state, book) { state.cart.push(book); }, removeItem(state, id) { state.cart = state.cart.filter(item => item.id !== id); } }; const actions = { addItem({ commit }, book) { commit('addItem', book); }, removeItem({ commit }, id) { commit('removeItem', id); } }; export default new Vuex.Store({ state, mutations, actions }); ``` 然后,在需要的地方注入`store`并使用它: ```javascript import { mapState, mapActions } from 'vuex'; export default { computed: { ...mapState(['cart']), totalPrice() { // ... } }, methods: { ...mapActions(['addItem', 'removeItem']) } }; ``` 这样就实现了基本的图书购物车功能。用户可以通过点击商品列表中的图书,将其添加到购物车,同时显示购物车的总价格。如有更多需求,例如清空购物车、编辑价格等,可以根据实际情况添加相应功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值