vue实现购物车

页面代码如下:

<body>
<div id="app">
    <div class="wrap">
        <div v-for="(item,index) in list"  class="commodity clearfix" :key="item.id">
            <div class="checkBox fl">
                <input class="check" type="checkbox" v-model="item.isChecked" @change="clickOnce"/>
            </div>
            <div class="pic fl">
                <img :src="item.thumbnail" alt="#"/>
            </div>
            <div class="txt fl">
                <h3>{{item.name}}</h3>
                <p>规格:50g</p>
                <p><span>{{item.reduct_price}}</span></p>
            </div>
            <div class="num">
                <button  @click="minusNum(index)">-</button>
                <input ref="refNum" type="text" v-model.number="item.num" @keydown="changeNum(index)"/>
                <button @click="addNum(index)">+</button>
            </div>
        </div>


        <div class="footer clearfix">
            <div class="allCheckBox fl">
                <input class="allCheck" type="checkbox" v-model="allChecked" @change="clickAll"/>
                <span>全选</span>
            </div>
            <a class="btn fr" href="#">去结算(<span>{{sum.sumNum}}</span>件)</a>
            <div class="agg fl">
                <div class="allPrice">
                    总计:<span id="price">{{sum.sumAll}}</span>
                </div>
                <div class="discounts">
                    不含运费,已优惠 <span>¥{{sum.sumDiscounts}}</span>
                </div>
            </div>
        </div>
    </div>
</div>
</body>

实现方法如下:

<script type="text/javascript">
    var app = new Vue({
        el:'#app',
        data:{
            allChecked:false,//代表全选按钮的值
            success:true,
            code:200,
            msg:"获取购物车数据成功",
            list:[{
                "id": "00001",
                "name": "施华蔻伊采染发膏60ml",
                "brand": "施华蔻",
                "original_price": "100",
                "inventory": "1062",
                "thumbnail": "https:\/\/fjlyl.xyz\/assets\/hairDye\/products (1).jpg",
                "product_id": "00021",
                "time_start": "2018-12-17 06:00:00",
                "time_end": "2018-12-17 07:00:00",
                "total": "727",
                "reduct_price": "69",
                "stock": "113",
                "num":3,
                'isChecked':false
            }, {
                "id": "00002",
                "name": "施华蔻伊采染发膏100ml",
                "brand": "施华蔻",
                "original_price": "264",
                "inventory": "2615",
                "thumbnail": "https:\/\/fjlyl.xyz\/assets\/hairDye\/products (2).jpg",
                "product_id": "00022",
                "time_start": "2018-12-17 21:00:00",
                "time_end": "2018-12-17 23:00:00",
                "total": "559",
                "reduct_price": "241",
                "stock": "320",
                "num":2,
                'isChecked':false

            }, {
                "id": "00003",
                "name": "施华蔻伊采染发膏200ml",
                "brand": "施华蔻",
                "original_price": "97",
                "inventory": "3001",
                "thumbnail": "https:\/\/fjlyl.xyz\/assets\/hairDye\/products (3).jpg",
                "product_id": "00023",
                "time_start": "2018-12-17 07:00:00",
                "time_end": "2018-12-17 08:00:00",
                "total": "2393",
                "reduct_price": "35",
                "stock": "1054",
                "num":2,
                'isChecked':false
            }]
        },
        methods:{
            clickOnce:function () {
                var allChecked = true;
                for(var i=0;i<this.list.length;i++){
//                只要有一个没选中就为false
                    if(!this.list[i].isChecked){
                        allChecked = false;
                        break;
                    }
                }
                this.allChecked = allChecked;

            },
            clickAll:function () {
                console.log(1);
                for(var i=0;i<this.list.length;i++){
//                只要有一个没选中就为false
                    this.list[i].isChecked = this.allChecked;
                }
            },
//            加
            addNum:function (i) {
                this.list[i].num++;
            },
//            手动输入框
            changeNum:function (i) {
                var num = this.list[i].num;
                console.log(isNaN(Number(num)));
                if(isNaN(Number(num))){
                        num = 0;
                }else{
//                    console.log(num.trim().length);
                    num = String(num);
                    if(num.trim().length==0){
                        num = 0;
                    }
                }
                this.list[i].num = parseInt(num);
            },
//            减
            minusNum:function (i) {
                this.list[i].num--;
                this.list[i].num = this.list[i].num<0?0:this.list[i].num;
            }
        },
        computed:{
            sum:function () {
//               总价
                var sumAll = 0;
//                总件数
                var sumNum = 0;
//                总优惠
                var sumDiscounts = 0;
                for(var i=0;i<this.list.length;i++){
                    if(this.list[i].isChecked){
                        sumAll += this.list[i].num*this.list[i].reduct_price;
                        sumNum += this.list[i].num;
                        sumDiscounts += (this.list[i].original_price-this.list[i].reduct_price)*this.list[i].num;
                    }
                }
                console.log(sumNum);
                var obj = {
                    sumAll:sumAll,
                    sumNum:sumNum,
                    sumDiscounts:sumDiscounts
                };
                return obj;
            }
        }
    })
    
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值