Vue(五) 购物车案例
这一篇把之前所学的内容做一个总结,实现一个购物车样例,可以增加或者减少购买数量,可移除商品,并且购物车总价随着你的操作实时变化。
实现效果如图:

代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>购物车案例</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
        [v-cloak] {
            display: none;
        }
        table {
            border: 1px solid #e9e9e9;
            border-collapse: collapse;
            border-spacing: 0;
            empty-cells: show;
        }
        th, td {
            padding: 8px 16px;
            border: 1px solid #e9e9e9;
            text-align: left;
        }
        th {
            background-color: #f7f7f7;
            color: #5c6b77;
            font-weight: 600;
            white-space: nowrap;
        }
    </style>
</head>
<body>
<div id="app" v-cloak>
    <table>
        <tr>
            <th>序列号</th>
            <th>商品名称</th>
            <th>商品单价</th>
            <th>购买数量</th>
            <th>操作</th>
        </tr>
        <tr v-for="(item, index) in list">
            <td>{{ index + 1 }}</td>
            <td>{{ item.name }}</td>
            <td>{{ item.price }}</td>
            <td>
                <button @click="reduce(index)" :disable="item.count === 1">-</button>
                {{ item.count }}
                <button @click="add(index)">+</button>
            </td>
            <td><button @click="del(index)">移除</button></td>
        </tr>
    </table>
    <p>总价:¥{{ total }}</p>
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            list: [
                {
                    id: 1,
                    name: 'Iphone xs',
                    price: 10000,
                    count: 1
                },
                {
                    id: 2,
                    name: 'Ipad Pro',
                    price: 6666,
                    count: 1
                },
                {
                    id: 3,
                    name: 'MacBook Pro',
                    price: 25000,
                    count: 1
                },
            ]
        },
        methods: {
            reduce: function (index) {
                if(this.list[index].count === 1) return;
                this.list[index].count--;
            },
            add: function (index) {
                this.list[index].count++;
            },
            del: function (index) {
                this.list.splice(index, 1);
            }
        },
        computed: {
            total: function () {
                var total = 0;
                for(var i = 0; i < this.list.length; i++) {
                    total += this.list[i].price * this.list[i].count;
                }
                return total.toString().replace(/\B(?=(\d{3})+$)/g, ',');
            }
        }
    });
</script>
</body>
</html>
												
											Vue(五) 购物车案例的更多相关文章
- Vue实战-购物车案例
		
Vue实战-购物车案例 普通购物车 实现的功能:添加商品到购物车,计算总价 <!DOCTYPE html> <html lang="en"> <hea ...
 - jQuery基础入门+购物车案例详解
		
jQuery是一个快速.简洁的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是"write Less,Do More",即倡导写更少的代码,做更多 ...
 - Flume环境搭建_五种案例
		
Flume环境搭建_五种案例 http://flume.apache.org/FlumeUserGuide.html A simple example Here, we give an example ...
 - easyUI拖动购物车案例
		
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...
 - 【Vue.js实战案例】- Vue.js递归组件实现组织架构树和选人功能
		
大家好!先上图看看本次案例的整体效果. 浪奔,浪流,万里涛涛江水永不休.如果在jq时代来实这个功能简直有些噩梦了,但是自从前端思想发展到现在的以MVVM为主流的大背景下,来实现一个这样繁杂的功能简直不 ...
 - Flume环境搭建_五种案例(转)
		
Flume环境搭建_五种案例 http://flume.apache.org/FlumeUserGuide.html A simple example Here, we give an example ...
 - 使用vue模拟购物车小球动画
		
使用vue模拟购物车小球动画 1.效果演示 2.相关代码 <!DOCTYPE html> <html lang="en"> <head> < ...
 - DOM操作相关案例 模态对话框,简易留言板,js模拟选择器hover,tab选项卡,购物车案例
		
1.模态框案例 需求: 打开网页时有一个普通的按钮,点击当前按钮显示一个背景图,中心并弹出一个弹出框,点击X的时候会关闭当前的模态框 代码如下: <!DOCTYPE html> <h ...
 - vue实战记录(五)-  vue实现购物车功能之商品总金额计算和单选全选删除功能
		
vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(五) GitHub:sue ...
 
随机推荐
- python迭代-可迭代对象与迭代器对象
			
可迭代对象与迭代器对象 问题举例 某软件要求,从网络抓取各个城市的气温信息,并依次显示: 北京:15~22 上海:18~23 ...... 如果一次抓取所有城市气温信息再显示,显示第一个城市的气温时会 ...
 - pycharm中代码整体缩进
			
整体缩进 : 1.选中需要缩进的代码 2.Tab键 反向缩进: shift+Tab
 - Centos7.2 Install subversion server
			
l 安装svn yum install subversion l 查看svn版本 svnserve --version l 创建svn版本库目录 mkdir -p /projects/ ...
 - Windbg程序调试系列2-内存泄露问题
			
上篇文章给大家解释了Windbg的基本命令和说明,这一篇给大家介绍内存泄露场景的问题分析. 文章大纲: 描述问题背景和现象 确定问题是否是内存泄露 梳理问题分析思路 动手分析解决 总结 1. 先说问题 ...
 - KVM 通过virsh console连入虚拟机
			
新安装一台虚拟机后,是无法通过virsh console 命令连入虚拟机中的,这时我们需要开启虚拟机的console功能. 一.添加ttyS0的许可,允许root登陆 [root@localhost ...
 - json字符串 转Java List  简单方法
			
JSONArray jsonArr = JSONArray.fromObject(jsonStr); List<Map<String,Object>> listMap = (L ...
 - Android 性能优化之内存泄漏检测以及内存优化(中)
			
https://blog.csdn.net/self_study/article/details/66969064 上篇博客我们写到了 Java/Android 内存的分配以及相关 GC 的详细分析, ...
 - docker性能测试
			
测试环境: 操作系统:CentOS7.openstack nova-docker启动的centos7.openstack环境启动的centos7虚拟机 CPU:Intel(R) Xeon(R) CPU ...
 - this指向问题,只提供案例,不做任何分析
			
希望大家在测试的道路上找到答案,阔步前行 <script type="text/javascript"> /*this指向 console.log(this); fun ...
 - mysql 5.7 运维命令
			
MySQL安装 1)卸载旧版本 a) 停掉mysql #pkill -9 mysqld b) 查看rpm包 # rpm -qa|grep -i mysql c) 删除 #yum -y remove m ...