首页IT科技vuex购物车(vue实现购物车功能)

vuex购物车(vue实现购物车功能)

时间2025-08-03 09:21:32分类IT科技浏览5615
导读: 随着时代发展,网购成了人们必不可少的一部分,所以我们常常遇到要实现购物车功能,如下图,我们来分析一下 下图所示页面:...

         随着时代发展               ,网购成了人们必不可少的一部分                       ,所以我们常常遇到要实现购物车功能        ,如下图               ,我们来分析一下 下图所示页面:

        首先                       ,我们通过ElementUI中的<el-table>标签来实现页面的呈现               。

        其次        ,我们可以看到“价格               ”列和“总价                       ”是由"¥"+价格 组成       ,并且价格要保留两位小数

第三                       ,“购买数量        ” 点击‘-’号按钮时不能小于1

        第四               ,当所有商品都被移除时       ,显示‘购物车为空’

购物车有数据时:

 购物车无数据时:

         在代码中                       ,我们利用了过滤器来实现“价格               ”和‘总价’的拼接               ,通过toFixed()方法实现保留两位小数,通过disabled属性来实现当数量小于等于1时                       ,不再进行数量减法                       ,通过计算属性computed来实现总价的计算,通过splice()方法来实现移除功能                       。下面让我们上代码:

<template> <div> <h1>购物车</h1> <div v-if="tableData.length"> <el-table :data="tableData" style="width: 100%"> <el-table-column type="index" width="50" align="center" header- align="center"> </el-table-column> <el-table-column prop="name" label="书籍名称" width="180" align="center" header-align="center"> </el-table-column> <el-table-column prop="press" label="出版社" width="180" align="center" header-align="center"> </el-table-column> <el-table-column prop="price" label="价格" width="180" align="center" header-align="center"> <template slot-scope="scope"> <div>{{ scope.row.price | showPrice}}</div> </template> </el-table-column> <el-table-column prop="count" label="购买数量" width="180" align="center" header-align="center"> <template slot-scope="scope"> <div style="display: flex;align-items: center;justify-content: center;"> <el-button size="small" @click="decrement(scope.$index)" :disabled="scope.row.count <= 1">-</el-button> <div style="width: 50px;">{{scope.row.count}}</div> <el-button size="small" type="primary" @click="increment(scope.$index)">+</el-button> </div> </template> </el-table-column> <el-table-column label="操作" width="120" align="center" header- align="center"> <template slot-scope="scope"> <el-button type="danger" size="small" @click="removeHandle(scope.$index)"> 移除 </el-button> </template> </el-table-column> </el-table> <h2>总计:{{totalPrice | showPrice}}</h2> </div> <div v-else>购物车为空</div> </div> </template> <script> export default { data() { return { tableData: [ { name:《C Primer Plus》, press:人民邮电出版社, price:155.00, count:1 }, { name:《计算机系统基础》, press:机械工业出版社, price:100.00, count:1 }, { name:《深入浅出Vue.js》, press:人民邮电出版社, price:200.00, count:1 }, { name:《算法》, press:人民邮电出版社, price:250.00, count:1 } ], } }, computed: { totalPrice() { //计算总价 let total = 0; for(let i in this.tableData){ total += this.tableData[i].price * this.tableData[i].count; } return total } }, filters:{ //过滤器 // 拼接价格/总价 showPrice(price){ return + price.toFixed(2); } }, methods: { increment(index){//加 this.tableData[index].count++ }, decrement(index){//减 this.tableData[index].count-- }, removeHandle(index){//移除 this.tableData.splice(index,1); } } } </script>

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
nodered 二次开发([nodejs]保证你的程序死了还能复活:forever and forever webui MK2 博客园) 傲软录屏是免费的吗(傲软录屏录制的视频在哪看_傲软录屏视频编辑功能)