vue购物车案例(源码)

这篇具有很好参考价值的文章主要介绍了vue购物车案例(源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

全部效果的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>购物车</title>
    <!-- 引入js -->
    <script src="../js/vue.js"></script>
    <style>
        td {
         text-align: center;
        }
    </style>
</head>
<body>
    <div id="app">
        <div class="addGood">
            商品名称:<input type="text" v-model="gname">
            商品数量:<input type="number" v-model="gnum">
            商品状态:<select v-model="gstatus">
                <option value="true">上架</option>
                <option value="false">下架</option>
            </select>
            <button @click="addGood">增加商品</button>
        </div>
        <table border="=1px" width="800px" rules="all">
            <thead>
                <th><input type="checkbox" @click="checkAllMethod" v-model="checkAll">全选</th>
                <th>编号</th>
                <th>名称</th>
                <th>状态</th>
                <th>数量</th>
                <th>操作</th>
            </thead>
            <tbody>
                <tr v-for="good in goods">
                    <td><input type="checkbox" v-model="good.ischecked"></td>
                    <td>{{good.id}}</td>
                    <td>{{good.name}}</td>
                    <td>
                        <span v-if="good.status">上架状态</span>
                        <span v-else="good.status">下架状态</span>
                    </td>
                    <td>
                        <button @click="addNum(good.id)">+</button>
                        {{good.num}}
                        <button @click="subNum(good.id)">-</button>
                    </td>
                    <td>
                        <button @click="del(good.id)">删除</button>
                        <button @click="goodDown(good.id)" v-if="good.status">点击下架</button>
                        <button @click="goodUp(good.id)" v-else="good.status">点击上架</button>
                    </td>
                </tr>
            </tbody>
        </table>
        选中的商品的总数量:{{total}}
    </div>
</body>
<script>
  var vue = new Vue({
        el: "#app",
        data: {
            goods: [
                { id: 1, name: "苹果", status: true, num: 5, ischecked: true },
                { id: 2, name: "香蕉", status: true, num: 5, ischecked: false },
                { id: 3, name: "橘子", status: false, num: 5, ischecked: false },
                { id: 4, name: "甘蔗", status: true, num: 5, ischecked: false },
                { id: 5, name: "荔枝", status: true, num: 5, ischecked: false }
            ]
            ,
            gid: 5,
            gname: "",
            gstatus: true,
            gnum: 5,
            gisckecked: false,
            checkAll: false
        },
        methods: {
            addGood() {
                //添加商品,往goods里面加一条json数据
                var myGood = {
                    id: ++this.gid,
                    name: this.gname,
                    num: this.gnum,
                    status: this.gstatus,
                    ischecked: this.gisckecked
                }
                this.goods.push(myGood)
            },
            //全选,全不选
            checkAllMethod() {
                this.goods.forEach(element => {
                      //孩子checkbox的checked属性值跟全选(父checked)的属性保持一致
                    element.ischecked = !this.checkAll
                });
            },
            //添加数据
            addNum(id) {
                this.goods.forEach(element => {
                    if (element.id == id) {
                        element.num++
                    }
                })
            },
             //减少数量
            subNum(id) {
                this.goods.forEach(element => {
                    if (element.id == id) {
                        if (element.num > 0) {
                            element.num--
                        }
                    }
                })
            },
            //删除商品
            del(id) {
                var flag = confirm("你确定要删除吗?");
                if (flag) {
                    this.goods.forEach((element, index) => {
                        if (element.id == id) {
                            this.goods.splice(index, 1)
                        }
                    })
                }
            },
            //商品下架
            goodDown(id) {
                this.goods.forEach(element => {
                    if (element.id == id) {
                        element.status = !element.status
                    }
                })
            },
            //商品上架
            goodUp(id) {
                this.goods.forEach(element => {
                    if (element.id == id) {
                        element.status = !element.status
                    }
                })
            }
        },
        computed: {
            //计算方法,此处的代码会根据data中的数据自动发生(重新计算)变化
            total() {
                var sum = 0;
                this.goods.forEach(element => {
                    if (element.ischecked) {
                        sum += element.num
                    }
                })
                return sum
            },
        }
    }) 

</script>
</html>

最终实现的效果

vue购物车案例(源码)

 购物车功能实现

(1)实现全选,选中购物车中所有内容

(2)点击增加和减少按钮,每个商品的数量发生变化,对应的金额会变化

(3)动态计算总价,商品总数

(4)点击操作中的删除,或者下面的删除所选商品按钮可以删除商品

(5)可以更改商品的状态,上架或者下架,更灵活

代码实现流程分析:

  1. 首先我们看这个代码,它是没有引入vue.js的,所以我们的第一步当然是先引入一下
  2. <script src="../js/vue.js"></script>

    这里我引用的是本地的vue.js,下面这个是官网的可以直接用,如果不行的话,我建议你们去vue官网看一下,https://cdn.staticfile.org/vue/2.2.2/vue.min.js。

  3. 可以给页面添加好看的样式,你们可以自行添加,我直接用表格实现,就没有加样式,代码如下,这是写在body里面的,这里用到了一些东西

  4. 使用v-for调用data里productList列表里的数据,循环创建元素
    将循环出来的product数据通过插值表达式{{}}展现在页面上
    使用v-bind将product里的pro_img(图片地址)绑定到img里的src上
    使用v-model将product里的pro_num(商品数量)和input进行双向绑定,以便修改商品数量
    使用v-if,v-else来判断状态

  5. <div id="app">
            <div class="addGood">
                商品名称:<input type="text" v-model="gname">
                商品数量:<input type="number" v-model="gnum">
                商品状态:<select v-model="gstatus">
                    <option value="true">上架</option>
                    <option value="false">下架</option>
                </select>
                <button @click="addGood">增加商品</button>
            </div>
            <table border="=1px" width="800px" rules="all">
                <thead>
                    <th><input type="checkbox" @click="checkAllMethod" v-model="checkAll">全选</th>
                    <th>编号</th>
                    <th>名称</th>
                    <th>状态</th>
                    <th>数量</th>
                    <th>操作</th>
                </thead>
                <tbody>
                    <tr v-for="good in goods">
                        <td><input type="checkbox" v-model="good.ischecked"></td>
                        <td>{{good.id}}</td>
                        <td>{{good.name}}</td>
                        <td>
                            <span v-if="good.status">上架状态</span>
                            <span v-else="good.status">下架状态</span>
                        </td>
                        <td>
                            <button @click="addNum(good.id)">+</button>
                            {{good.num}}
                            <button @click="subNum(good.id)">-</button>
                        </td>
                        <td>
                            <button @click="del(good.id)">删除</button>
                            <button @click="goodDown(good.id)" v-if="good.status">点击下架</button>
                            <button @click="goodUp(good.id)" v-else="good.status">点击上架</button>
                        </td>
                    </tr>
                </tbody>
            </table>
            选中的商品的总数量:{{total}}
        </div>

功能实现

(1)给购物车初始化

  goods:[
                {id:1,name:"苹果",status:true,num:5,ischecked:true},
                {id:2,name:"香蕉",status:true,num:5,ischecked:false},
                {id:3,name:"橘子",status:false,num:5,ischecked:false},
                {id:4,name:"甘蔗",status:true,num:5,ischecked:false},
                {id:5,name:"荔枝",status:true,num:5,ischecked:false},
            ],
            gid :5,
            gname:"",
            gstatus:true,
            gischecked:false,
            checkAll:false

(2)添加功能实现

 addGood(){
                //添加商品,往goods里面加一条json数据
                var myGood={
                    id:++this.gid,
                    name:this.gname,
                    num:this.gnum,
                    status:this.gstatus,
                    ischecked:this.gischecked
                }
                this.goods.push(myGood)
            },

效果演示

vue购物车案例(源码)

 (3)全选和单选按钮功能实现

 checkAllMethod(){

                this.goods.forEach(element => {
                   //孩子checkbox的checked属性值跟全选(父checked)的属性保持一致
                    element.ischecked=this.checkAll
                });
            },

效果展示

vue购物车案例(源码)vue购物车案例(源码)

 (4)添加数据

addNum(id) {
                this.goods.forEach(element => {
                    if (element.id == id) {
                        element.num++
                    }
                })
            },

 (5)减少数量

 //减少数量
            subNum(id) {
                this.goods.forEach(element => {
                    if (element.id == id) {
                        if (element.num > 0) {
                            element.num--
                        }
                    }
                })
            },

(6)删除商品

 del(id) {
                var flag = confirm("你确定要删除吗?");
                if (flag) {
                    this.goods.forEach((element, index) => {
                        if (element.id == id) {
                            this.goods.splice(index, 1)
                        }
                    })
                }
            },

(7)商品上架和下架

 //商品下架
            goodDown(id) {
                this.goods.forEach(element => {
                    if (element.id == id) {
                        element.status = !element.status
                    }
                })
            },
            //商品上架
            goodUp(id) {
                this.goods.forEach(element => {
                    if (element.id == id) {
                        element.status = !element.status
                    }
                })
            }
        },

(8)数量计算

computed: {
            //计算方法,此处的代码会根据data中的数据自动发生(重新计算)变化
            total() {
                var sum = 0;
                this.goods.forEach(element => {
                    if (element.ischecked) {
                        sum += element.num
                    }
                })
                return sum
            },
        }
    }) 

最后总结:

这个项目对于初次使用vue的编程人员来说,可以很好的增加你对这门语言的熟练度,对后续vue的学习有很好的帮助,希望这个对小伙伴来说有用,谢谢大家。文章来源地址https://www.toymoban.com/news/detail-478925.html

到了这里,关于vue购物车案例(源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 14-案例:购物车

    需求说明:         1. 渲染功能                 v-if/v-else v-for :class         2. 删除功能                 点击传参 filter 过滤覆盖原数组         3. 修改个数                 点击传参 find 找对象         4. 全选反选                 计算属性 computed 完整写法 get/

    2024年02月12日
    浏览(38)
  • [gtp]购物车案例参考

    react hooks,购物车案例. 在列表上点击+或者-更新数量,调用接口更新单个价格. 点击table的checkbox勾选后,计算总价? 对于React Hooks和购物车案例,您可以使用useState来管理列表中商品的数量和总价。当点击\\\"+“或”-\\\"按钮时,可以更新相应商品的数量,并通过调用接口来更新单个商品

    2024年02月13日
    浏览(25)
  • 基于jQuery------购物车案例

    目录 基于jQuery------购物车案例 案例:购物车案例模块-增减商品数量分析 案例:购物车案例模块-修改商品小计分析  案例:购物车案例模块-计算总计和总额 案例:购物车案例模块-删除商品模块  案例:购物车案例模块-选中商品添加背景 html  js css  效果  ① 核心思路:首

    2024年02月02日
    浏览(28)
  • 记录-JS简单实现购物车图片局部放大预览效果

    代码不多,先看一下 HTML 里面结构很简单,初始化 MagnifyingGlass 对象来关联一个 IMG 标签来实现放大。 再看一下 MagnifyingGlass 上面的就是全部逻辑,实现方法肯定不是最优的,但是其中可以联想到通过像素点的操作实现任意效果。 可以启动一个 node 本地服务,首先见一个

    2023年04月20日
    浏览(68)
  • javascript+css+html购物车案例

    javascript代码部分主要实现三部分功能  1、商品数量增加(减少)同时小计增加(减少) 这部分主要是通过for循环给增加(减少)按钮绑定点击事件 1)点击后计数器自增(自减) 2)计数器数量*对应商品单价 赋值给对应商品小计(涉及到数据类型转换) parseInt(\\\'12ccc\\\' ) →

    2024年02月02日
    浏览(58)
  • 微信小程序实现商品加入购物车案例

    思考: 购物车中的数据保存在哪里?用哪种数据结构进行保存? 小程序中可能有多个页面需要对购物车中的数据进行操作,因此我们想到把数据存到全局中。可以使用 wx.setStorageSync() 储存,用 wx.getStorageSync() 进行获取,以数组格式方便对数据进行操作。 一、商品加入购物车

    2024年02月10日
    浏览(38)
  • JavaWeb(10)——前端综合案例4(购物车示例)

           购物车需要展示一个已加入购物车的商品列表,包含商品名称、商品单价、购买数量和操作 等信息,还需要实时显示购买的总价。其中购买数量可以增加或减少,每类商品还可以从购物车中移除。最终实现的效果大致如图所示。 基础版 plus版              先在

    2024年02月05日
    浏览(35)
  • Vue项目商品购物车前端本地缓存逻辑(适用H5/ipad/PC端)——前端实现购物车删除商品、购物车增减数量,清空购物车功能

    Vue3 + Vite + Ts开源后台管理系统模板 基于ElementUi或AntdUI再次封装基础组件文档 基于Element-plus再次封装基础组件文档(vue3+ts)

    2024年02月12日
    浏览(37)
  • Vue项目(购物车)

    目录 购物车效果展示: 购物车代码: 购物车效果展示: 此项目添加、修改、删除数据的地方都写了浏览器都会把它存储起来 下次运行项目时会把浏览器数据拿出来并在页面展示 Video_20230816145047 购物车代码: 复制完代码,需改下script中引入的vue文件地址; 可直接使用

    2024年02月12日
    浏览(29)
  • 【微信小程序】-- uni-app 项目-- 购物车 -- 首页 - 轮播图效果(五十二)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2023年04月18日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包