使用vue3实现简单的书籍购物车

使用vue3实现简单的书籍购物车

需求效果如图:

在这里插入图片描述

使用的软件为vscode

第一步:创建book.html文件

在文件上输入html5,并按Tab/回车,就会自动生成html5的模板

<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>书籍购物车</title>
</head>

<body>
  
</body>

</html>

第二步:编写界面样式

明显能看出这是一个表格,表格里面第一行是表头,下面还有四行数据

于是使用

标签,表头写在标签中,数据写在标签

因为数据不可能只有一条,所以提前用变量来占位

点击按钮也顺便绑定上见名之意的事件

decrement(index),传入下标index,表示减少当前下标的count的数值

increment(index),传入下标index,表示增加当前下标的count的数值

del(index),传入下标index,表示删除当前下标的列/数据

@click:v-on:click的简写形式,绑定点击事件

:disabled:v-bind:disabled的简写形式,vue3专属,满足条件的时候禁用标签

<body>
  <div id="app" style="width:90%;margin:auto;">
    <table border="1" width="500px">
      <thead>
        <tr>
          <td></td>
          <td>书籍名称</td>
          <td>出版日期</td>
          <td>价格</td>
          <td>购买数量</td>
          <td>操作</td>
        </tr>
      </thead>
      <tbody>
        <!-- 使用v-for从bookList里面获取书籍信息 -->
        <tr v-for="(book,index) in bookList" :key="index">
          <td>{{index+1}}</td>
          <td>{{book.bname}}</td>
          <td>{{book.publish}}</td>
          <td>¥{{book.price}}</td>
          <td>
            <!-- :disabled是v-bind:disabled的简写 -->
            <button @click="decrement(index)" :disabled="book.count == 1">-</button>
            {{book.count}}
            <button @click="increment(index)">+</button>
          </td>
          <td>
            <button @click="del(index)">移除</button>
          </td>
        </tr>
      </tbody>
    </table>
    <h2>总价:¥{{sum}}</h2>
  </div>
</body>

第三步:编写vue语句

书籍信息保存在bookList中

使用计算属性computed来计算价格总和,遍历bookList的书籍价格和数量,相乘并求和。计算属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算

减号点击事件,只有在数量大于1的时候才可以减少数量,每次点击count减1

加号点击事件,每次点击count加1

删除按钮点击事件,调用splice方法,传入两个参数,第一个参数是删除对象的下标,第二个参数是从这个坐标开始删除的个数,删除当前就是当前坐标,数量1

<!-- 导入vue.global.js -->
<script type="text/javascript" src="js/vue.global.js"></script>
  <script>
    // 1.创建app
    const app = Vue.createApp({
      // data: option api
      data: function () {
        return {
          bookList: [
            { bname: '算法导论1', publish: '2006-1', price: 20, count: 1 },
            { bname: '算法导论2', publish: '2007-2', price: 40, count: 1 },
            { bname: '算法导论3', publish: '2008-3', price: 60, count: 1 },
            { bname: '算法导论4', publish: '2009-4', price: 80, count: 1 },
          ],
        }
      },
      computed: {
        // computed:计算属性
        // 特点:计算属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算
        sum() {
          let sum = 0;
          // forEach方法遍历
          this.bookList.forEach(book => {
            sum += book.price * book.count
          });
          return sum;
        }
      },
      methods: {
        // 减号点击事件,只有在数量大于1的时候才可以减少数量,每次点击count减1
        decrement(i) {
          if (this.bookList[i].count > 1) {
            this.bookList[i].count--
          }
        },
        // 加号点击事件,每次点击count加1
        increment(i) {
          this.bookList[i].count++
        },
        // 删除按钮点击事件,调用splice方法,传入两个参数
        // 第一个参数是删除对象的下标,第二个参数是从这个坐标开始删除的个数
        // 删除当前就是当前坐标,数量1
        del(i) {
          this.bookList.splice(i, 1)
        }
      }
    })

    // 2.挂载app
    app.mount("#app")
  </script>

最终效果展示

  del(i) {
      this.bookList.splice(i, 1)
    }
  }
})

// 2.挂载app
app.mount("#app")
```

最终效果展示

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用中的内容,这个项目是一个基于SpringBoot和Vue的前后端分离型图书管理系统。它包含了一个购物功能,可以进行加减、全选和计算总金额。 要实现vue2项目购物加减全选总计的功能,你可以按照以下步骤进行操作: 1. 首先,创建一个购物页面,并在页面中展示商品列表。每个商品应该有数量和价格的显示,并且需要有加减按钮和选择框。 2. 在Vue组件中,使用一个数组来保存购物中的商品信息。每个商品对象应该包含商品的数量、价格和是否被选中的状态。 3. 对于每个商品的数量加减操作,可以使用Vue的计算属性来实现。在点击加减按钮时,修改对应商品对象的数量属性即可。 4. 实现全选功能,可以在页面上添加一个全选按钮。点击全选按钮时,遍历购物中的商品列表,将所有商品的选中状态设置为与全选按钮相同。 5. 计算购物中选中商品的总金额,可以在Vue组件中定义一个计算属性。遍历购物中的商品列表,将选中的商品的价格乘以数量累加起来。 通过以上步骤,你就可以实现vue2项目购物加减全选总计的功能了。这样用户就可以方便地进行商品的加减操作,全选或取消全选商品,并计算购物中选中商品的总金额。<span class="em">1</span> #### 引用[.reference_title] - *1* [毕设项目:基于SpringBoot+Vue前后端分离型图书管理系统](https://download.csdn.net/download/qq_35831906/88227378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值