zoukankan      html  css  js  c++  java
  • 纯前端vue处理购物车思路方法

    <div id="app" v-cloak>
            <div class="Zenobia_i_banner"></div>
            <div class="Zenobia_i_alone" v-for="item,index in list">
                <div class="iconfont iconyi" v-if="item.ischeck" @click="select(item.id,index,false,item.nums,item.price,item.total)"></div>
                <div class="iconfont iconwei" v-else @click="select(item.id,index,true,item.nums,item.price,item.total)"></div>
                <div class="Zenobia_i_alone_caipin">
                    <img class="Zenobia_i_alone_caipin_pic" :src="Zenobia_Url+item.pic" @click="showPic(Zenobia_Url+item.pic)">
                    <div class="Zenobia_i_alone_caipin_info">
                        <div class="Zenobia_i_alone_caipin_info_title">{{item.name}}</div>
                        <div class="Zenobia_i_alone_caipin_info_box">
                            <div class="Zenobia_i_alone_caipin_info_box_price">${{item.price}}</div>
                            <div class="Zenobia_i_alone_caipin_info_box_nums">
                                <div class="iconfont iconjian" @click="cutNums(index,item.nums,item.price)"></div>
                                <input type="text" v-model="item.nums">
                                <div class="iconfont iconjia" @click="addNums(index,item.nums,item.price)"></div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="Zenobia_i_bottom">
                <div class="Zenobia_i_bottom_left" @click="quanxuan">
                    <div class="iconfont iconyi" v-if="isquanxuan"></div>
                    <div class="iconfont iconwei" v-else></div>
                    <div class="Zenobia_i_bottom_left_text">全选</div>
                </div>
                <div class="Zenobia_i_bottom_right">
                    <div class="Zenobia_i_bottom_right_price">${{price}}</div>
                    <button class="Zenobia_i_bottom_right_btn" type="button" @click="titjiao">提交订单</button>
                </div>
            </div>
        </div>
                    data: {
                        list: [{
                            "id": 1,
                            "name": "Sweet and sour fillet of pork",//商品名称
                            "pic": "/public/uploads/images/pics/1.jpg",//商品图片
                            "price": 100,//商品价格
                            "ischeck": false,//默认未选择
                            "nums": 1,//默认数量1
                            "total": 100//先默认单品合计等于单价
                        }, {
                            "id": 2,
                            "name": "Braised Prawns",
                            "pic": "/public/uploads/images/pics/2.jpg",
                            "price": 50,
                            "ischeck": false,
                            "nums": 1,
                            "total": 50
                        }],
                        goods: [],//选中商品数组
                        price: 0,//合计
                        isquanxuan: false,//是否全选
    
                    },        
                    methods: {
                        addNums: function(index, nums, price) {
                            var that = this;
                            that.list[index].nums++;
                            that.list[index].total = that.list[index].total + price
                            if (that.list[index].ischeck) {
                                that.price = that.price + price
                            }
                        },
                        cutNums: function(index, nums, price) {
                            var that = this;
                            if (nums == 1) {
                                return
                            }
                            that.list[index].nums--;
                            that.list[index].total = that.list[index].total - price;
                            if (that.list[index].ischeck) {
                                that.price = that.price - price;
                            }
                        },
                        quanxuan: function() {
                            var that = this;
                            //每次点击全选时选中数组先清空,合计清零
                            that.goods = [];
                            that.price = 0;
                            if (that.isquanxuan) {//取消全选
                                that.isquanxuan = false;
                                for (var i in that.list) {
                                    that.list[i].ischeck = false;//所有全部
                                }
                            } else {//点击全选
                                that.isquanxuan = true;
                                for (var i in that.list) {
                                    that.list[i].ischeck = true;
                                    that.price = that.price + that.list[i].total;//计算合计
                                    var goods = {
                                        id: that.list[i].id,
                                        nums: that.list[i].nums,
                                        price: that.list[i].price,
                                        total: that.list[i].total
                                    }
                                    that.goods.push(goods);//把选中的重新插入到数组中
                                }
                            }
                            console.log(JSON.stringify(that.goods))
                        },
                        select: function(id, index, ischeck, nums, price, total) {
                            var that = this;
                            that.list[index].ischeck = ischeck;
                            console.log(JSON.stringify(that.goods))
                            if (ischeck) {
                                that.price = that.price + parseInt(total);
                                for (var i in that.goods) {
                                    if (that.goods[i].id == id) {
                                        that.goods[i].nums = that.goods[i].nums + nums
                                        that.goods[i].total = that.goods[i].total + total
                                        return
                                    }
                                }
                                var goods = {
                                    id: id,
                                    nums: nums,
                                    price: price,
                                    total: total
                                }
                                that.goods.push(goods);
                            } else {
                                that.price = that.price - parseInt(total);
                                for (var i in that.goods) {
                                    if (that.goods[i].id == id) {
                                        that.goods.splice(i, 1)
                                    }
                                }
                            }
                        },
                     }            
  • 相关阅读:
    千年不曾看懂《道德经》,直至有了《道德图》!--作者:南山空同
    初探工作流的库表设计
    教你如何快速上手markdown语法,编写技术博客(史上最全最简,用MarkDown写博客)
    面试官:你连RESTful都不知道我怎么敢要你? 文章解析
    Dapper系列 作者:懒懒的程序员一枚
    为何要编写《元灵心经》养、和、消三篇 作者 南山空同
    南山空同《学经》前24章
    ASP.NET Core 2.2 WebApi 系列【九】使用SignalR (作者:tenghao510 ) 学习及内容补充
    Net Core 中WebAPI有关 Session的设置,及获取
    asp.net core系列 WebAPI 作者:懒懒的程序员一枚
  • 原文地址:https://www.cnblogs.com/shark1100913/p/12529693.html
Copyright © 2011-2022 走看看