vue-vant购物车功能

本文详细介绍使用Vue和Vant UI框架实现购物车功能的方法,包括动态勾选按钮及数据计算,采用Computed属性优化性能。文章包含具体代码示例,展示如何创建全选功能、商品数量调整及删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue-vant购物车功能
效果图:
在这里插入图片描述
功能要求:
在这里插入图片描述
安装vue-cli以及用到的bootstrap以及vant,并且引入样式等
难点在于动态勾选按钮以及计算数据,这里都用computed进行计算
代码:

<template>  <div id="app">    <van-nav-bar title="购物车"/>     <van-row>        <van-col span="4">          全选:<input type="checkbox" v-model="checkAll">        </van-col>        <van-col span="5">          商品名称        </van-col>        <van-col span="5">          单价        </van-col>         <van-col span="5">          数量        </van-col>         <van-col span="5">          操作        </van-col>     </van-row>     <van-row v-for="(item,index) in list" :key="index">         <van-col span="4">          <input type="checkbox" v-model="item.isSelect">        </van-col>        <van-col span="5">          {{item.name}}        </van-col>        <van-col span="5">          {{item.price}}        </van-col>         <van-col span="5">          <van-button type="primary" size="small" @click="item.num<=1?1:item.num--" class="aa">-</van-button>              <input type="text" v-model="item.num" class="bb">          <van-button type="primary" size="small" @click="item.num++" class="cc">+</van-button>        </van-col>         <van-col span="5">          <van-button type="danger" @click="del(index)">删除</van-button>        </van-col>     </van-row>    <!-- 底部提交订单 -->    <van-submit-bar      :price="sum*100"      button-text="提交订单"    />    {{sum}}  </div></template>
<script>  export default{    data(){      return {        // checkAll:true,        list:[          {            isSelect:true,            name:"口罩",            price:10,            num:1          },          {            isSelect:true,            name:"手套",            price:20,            num:1          },        ],      }    },    methods:{      del(index){        this.list.splice(index,1)      }    },    computed:{      checkAll:{        //计算属性有两个固定方法        get(){  ///第一次页面加载过程中就调用get方法,获取当前应该得到的状态 getset用于设置checkAll          //every  检测每个是否符合条件          console.log("get")          return this.list.every(item=>{            return item.isSelect;//如果所有元素都通过检测返回 true,否则返回 false。 只要选项中有个参数为false得返回false          })        },        set(value){          console.log(value)          //set不需要return  遍历元素值  修改属性            this.list.forEach(item=>{            return item.isSelect = value;          })        }      },      sum(){        //total  计算做后返回结果值        //item  数组中对象        //reduce()进行计算        return this.list.reduce((total,item)=>{          //计算选中的          //如果商品没有选中,必须返回总值          if(!item.isSelect)return total;          return total+parseInt(item.price*item.num);             },0);//这个0是指定默认第一个total是0      }    }  }</script>
<style lang="scss">.aa,.bb,.cc{  width:30px;  float: left;}</style>

template:
在这里插入图片描述
script:
在这里插入图片描述
style:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小郑有点困了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值