vue购物车小demo

本文将通过Vue.js实现一个简单的购物车小demo,涵盖了组件化、数据绑定、计算属性和事件处理等核心功能。首先,创建商品列表组件,接着实现点击添加到购物车的功能,然后展示购物车中的商品,并提供数量增减和总价计算。最后,通过HTML5的localStorage持久化购物车数据,确保页面刷新后购物车内容依然存在。
摘要由CSDN通过智能技术生成
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="box">
        全选:<input type="checkbox" @change="handleAllChecked()" v-model="isAllChecked" />
        <ul>
            <li v-for="(data,i) in list" :key="data.id" style="overflow: hidden;">
                <input type="checkbox" :value="data" v-model="checkgroup" style="float: left;"
                    @change="handleItemChange()" />
                <div style="float: left;">
                    <div>{{data.name}}</div>
                    <div>价格:{{data.price}}</div>
                    <!-- <div>数量:{{data.number}}</div> -->
                </div>

                <div style="float: left;margin-left: 20px;">
                    <button @click="handleDel(data)">-</button>
                    {{data.number}}
                    <button @click="data.number++">+</button>
                </div>

                <div style="float: right;">
                    <button @click="deletes(data,i)">remove</button>
                </div>
            </li>
        </ul>

        {{checkgroup}}

        <p>总金额:{{ getSum() }}</p>
    </div>
</body>

</html>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var vm = new Vue({
        el: "#box",
        data: {
            checkgroup: [],
            isAllChecked: false,
            list: [
                {
                    name: "商品1",
                    price: 10,
                    number: 1,
                    id: "1",
                },
                {
                    name: "商品2",
                    price: 20,
                    number: 2,
                    id: "2",
                },
                {
                    name: "商品3",
                    price: 30,
                    number: 3,
                    id: "3",
                }
            ]
        },
        methods: {
            deletes(data, i) {
                this.list.splice(i, 1)
                var num = this.checkgroup.indexOf(data);
                if (num > -1) {
                    this.checkgroup.splice(num, 1)
                }

                if (this.checkgroup.length === 0) {
                    this.isAllChecked = false
                }
            },
            // 每个chekcbox 改变触发, 判读数组的长度与list长度
            handleItemChange() {
                console.log(this.checkgroup.length)
                if (this.checkgroup.length === this.list.length) {
                    //全选chekcbox勾上
                    this.isAllChecked = true
                } else {
                    // 取消checkbox勾选
                    this.isAllChecked = false
                }
            },

            //全选按钮处理
            handleAllChecked() {
                console.log(this.isAllChecked)
                if (this.isAllChecked) {
                    //全选中
                    this.checkgroup = this.list
                } else {
                    //全不选中
                    this.checkgroup = []
                }
            },
            //商品减少
            handleDel(data) {
                data.number--
                if (data.number === 0) {
                    data.number = 1
                }
            },
            // getName(){
            //   return this.name+"11111111";
            // },
            //计算总金额
            getSum() {
                var sum = 0;
                for (var i in this.checkgroup) {
                    sum += this.checkgroup[i].price * this.checkgroup[i].number
                }
                return sum
            }
        },
    })
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值