vue 简单实现购物车:商品基础信息最终的 html 文件 + 商品计数器的组件处理,实现了购物车;

news2025/2/6 12:42:46

购物车实现过程:

  • Ⅰ、商品购物车作业需求:
    • 1、商品购物车页面示例:
    • 2、具体需求:
  • Ⅱ、html 文件的构建:
    • 商品购物车.html
  • Ⅲ、组件文件的构建:
    • 商品购物车1.js
  • Ⅳ、小结:

Ⅰ、商品购物车作业需求:

1、商品购物车页面示例:

在这里插入图片描述

2、具体需求:


其一、至少包含两款商品,每款商品有不同的单价、起购数量和加减数量;

其二、组件需提取为单独的JavaScript文件;

其三、除了上述要求外,开发人员可以根据自己对“商品购物车”的理解自由发挥增加其他功能;

Ⅱ、html 文件的构建:

商品购物车.html

其一、项目的构建方式:

在这里插入图片描述

其二、代码为:


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js"></script>
		<script src="商品购物车1.js"></script>
		<style>
			/* 容器 flex布局,横向左边开始,纵向剧中,总共5个 */
			.v1 {
				/* 使用flex布局 */
				display: flex; 
				/* v1容器横向排列 */
				flex-direction: row;
				/* 主轴靠左,从左边开始 */
				justify-content: flex-start;
				/* 纵轴 剧中 */
				align-items: center;
			}
			
			.myImg {
				width: 100px;
				height: 100px;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<h3>商品购物车</h3>
			<div class="v1" v-for="(item, index) in goods">
				<div>
					<img class="myImg" :src="item.goodsImg"/>
				</div>
				<div style="margin-left: 20px;">
					<p>商品名称:{{item.goodsName}}</p>
					<p>商品介绍:{{item.goodsDes}}</p>
				</div>
				<div style="margin-left: 20px;">
					<!-- 使用过滤器对价格进行字符转换-格式化 ¥ 50.00  -->
					单价:{{item.goodsPrice | moneyFilter}}
				</div>
				<div style="margin-left: 20px;">
					<!-- 父组件使用@事件名称 来接收子组件传递过来的事件 -->
					<shop-counter @mycount="updateCount" :ind="index" :qigou="item.goodsQigou" :shuliang="item.goodsAmount"></shop-counter>
				</div>
				<div style="margin-left: 20px;">
					<!-- {{}}从data中的变量读取并显示 -->
					总金额:{{item.goodsPrice * item.goodsAmountNow | moneyFilter}}
				</div>
			</div>			
		</div>
		<script>
			var vm = new Vue({
				el: "#app",
				data: {
					goods: [ //装商品对象,每个商品有图像、名称、介绍、单价、起购数量、加减数量、总金额(单价*数量)
						{
							goodsImg: 'https://img.mp.sohu.com/upload/20170525/9a27d60cbc854536aa26c690c97cf2c0_th.png',
							goodsName: '北京烤鸭',
							goodsDes: '便宜不拉肚子',
							goodsPrice: 5000, //数据库存储金额,都是以币种最小单位存储 方便计算不会丢失精度
							goodsQigou: 5,
							goodsAmount: 2,
							goodsAmountNow: 5
						}, {
							goodsImg: 'https://img.zcool.cn/community/01dd8c6051cb0511013e87f451cc96.jpg@1280w_1l_2o_100sh.jpg',
							goodsName: 'Dior口红',
							goodsDes: '好用又好看',
							goodsPrice: 25012,
							goodsQigou: 1,
							goodsAmount: 1,
							goodsAmountNow: 1
						}
					]
				},
				methods: {
					updateCount(e, i) {
						//e中包含了商品数量e
						console.log("商品数量:" + e + "商品下标:" + i)
						//拿到了商品数量之后,我们要更新goods数组里面对应商品的goodsAmountNow值
						//数组想要识别其中到底是哪一个元素-下标索引
						this.goods[i].goodsAmountNow = e
					}
				},
				filters: {
					moneyFilter(e) {
						//对传递过来的价格进行转换,价格通过e来传递和接收
						// toFixed() JavaScript函数,可以对数字取n位小数 对数字调用toFixed()
						return (e / 100).toFixed(2)
					}
				}
			})
		</script>
	</body>
</html>

其三、展示页面为:

在这里插入图片描述

Ⅲ、组件文件的构建:

商品购物车1.js

其一、代码为:


//商品计数器的组件代码

Vue.component('shop-counter', {
	data: function() {
		return {
			count: parseInt(this.qigou), //商品数量,
			amount: parseInt(this.shuliang),
			subBtn: true,
			addBtn: false
		}
	},
	props: ['qigou', 'shuliang', 'ind'], //通过props接受父组件传递过来的数据
	// 1 颜色高亮 2 自动补全  3 不能换行
	// template: '<button></button>', //组件的HTML代码 两个按钮一个输入框
	// 反引号写代码 缺点1 颜色高亮 2 自动补全  但是可以换行
	template: `
	<div>
		<!-- 商品计数器总共3个组件 -号按钮 输入框 +号按钮 -->
		<button @click="sub" :disabled="subBtn">-</button>
		<input v-model.number="count" style="width: 20px;text-align: center;" @keydown.up="add" v-on:keydown.down="sub"/>
		<button @click="add" :disabled="addBtn">+</button>
	</div>
	`,
	methods: {
		sub() {
			// 最少1个,最多9个
			if (this.count > this.qigou) {
				// 如果>1,就给减
				this.count = this.count - this.amount //商品数量 -1
			}
			if (this.count <= this.qigou) {
				this.subBtn = true //如果商品小于1,禁用-号按钮
			}
			if (this.count < 99) {
				this.addBtn = false //如果商品小于9,启用+号按钮
			}
			//发射  子组件向父组件发射事件,携带商品数量过去
			this.$emit('mycount', this.count, this.ind)
		},
		add() {
			// 增加商品数量
			// 最少1个,最多9个
			if (this.count < 99) {
				this.count = this.count + this.amount //商品数量+1
			}
			if (this.count > this.qigou) {
				this.subBtn = false //如果商品大于1,启用-号按钮
			}
			if (this.count >= 99) {
				this.addBtn = true //如果商品数量大于9,禁用+号按钮
			}
			this.$emit('mycount', this.count, this.ind)
		}
	},
	watch: {
		count() {
			if (this.count < this.qigou || this.count > 99 || isNaN(parseInt(this.count))) {
				this.count = this.qigou
			}
		}
	}
})

Ⅳ、小结:

其一、哪里有不对或不合适的地方,还请大佬们多多指点和交流!
其二、若有转发或引用本文章内容,请注明本博客地址(直接点击下面 url 跳转) https://blog.csdn.net/weixin_43405300,创作不易,且行且珍惜!
其三、有兴趣的话,可以多多关注这个专栏(Vue(Vue2+Vue3)面试必备专栏)(直接点击下面 url 跳转):https://blog.csdn.net/weixin_43405300/category_11525646.html?spm=1001.2014.3001.5482

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1327922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度侯震宇详解:大模型将如何重构云计算?

12月20日&#xff0c;在2023百度云智大会智算大会上&#xff0c;百度集团副总裁侯震宇以“大模型重构云计算”为主题发表演讲。他强调&#xff0c;AI原生时代&#xff0c;面向大模型的基础设施体系需要全面重构&#xff0c;为构建繁荣的AI原生生态筑牢底座。 侯震宇表示&…

.Net Core webapi RestFul 统一接口数据返回格式

在RestFul风格盛行的年代&#xff0c;大部分接口都需要一套统一的数据返回格式&#xff0c;那么我们怎么才能保证使用统一的json数据格式返回呢&#xff0c;下面给大家简单介绍一下&#xff1a; 假如我们需要接口统一返回一下数据格式&#xff1a; {"statusCode": …

预警指挥中心建设方案

目录 1.系统概述 2.系统设计 一、设计原则 二、设计依据 3.建设内容 4.设备中心 4.1视频系统 4.2音频系统 4.2.1音响 4.2.2功放 4.2.3无线麦 4.2.4音频处理器 4.3控制系统 4.4视频会商系统 4.4.1全向麦 4.4.2高清摄像头 4.4.3会议终端 4.4.4系统软件 5.软件中…

COSP营造户外骑行新业态:2024深圳户外骑行展在深圳福田召开

随着人们生活水平的提高&#xff0c;绿色健康的生活方式备受关注&#xff0c;户外骑行作为一种绿色、健康的运动方式&#xff0c;越来越受到人们的青睐。此次展会将展示各种类型的户外骑行装备&#xff0c;包括自行车、头盔、手套、鞋类、骑行服等。深圳是中国户外骑行展会的重…

使用Flask逐步搭建Web应用程序

大家好&#xff0c;Flask是一个使用Python编写的轻量级Web应用框架。它被设计成简单、易于学习和使用的&#xff0c;同时具备足够的灵活性和扩展性&#xff0c;以满足各种规模的Web应用开发需求。本文我们将介绍一个使用Flask逐步搭建Web应用程序的简单入门示例。 1.安装Flask…

安装 PyCharm 2021.1 保姆级教程

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 目前能下载到的最新版本是 PyCharm 2021.1。 请注意对应 Python 的版本&#xff1a; Python 2: 2.7Python 3: >3.6, <3.11…

HarmonyOS4.0系统性深入开发01应用模型的构成要素

应用模型的构成要素 应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象提炼&#xff0c;它提供了应用程序必备的组件和运行机制。有了应用模型&#xff0c;开发者可以基于一套统一的模型进行应用开发&#xff0c;使应用开发更简单、高效。 HarmonyOS应用模型的构成要…

flink使用sql-client-defaults.yml无效

希望在flink sql脚本启动时自动选择catalog&#xff0c;减少麻烦。于是乎配置sql-client-defaults.yaml&#xff1a; catalogs:- name: hive_catalogtype: icebergcatalog-type: hiveproperty-version: 1cache-enabled: trueuri: thrift://localhost:9083client: 5warehouse: …

什么是误差,什么是重构误差,误差与重构误差有什么区别?

重构误差 1.误差的概念2.重构误差的概念 1.误差的概念 在机器学习中&#xff0c;误差通常是指模型的输出与实际标签或者真实值之间的差异&#xff0c;通常用于评估模型的预测能力或者训练的优化过程。 2.重构误差的概念 重构误差是指通过学习到的模型来重新构建&#xff08;或…

案例135:基于微信小程序的房屋租赁管理系统的设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

ArcGIS基础:便捷查看外业照片及识别举证照片方位角

打开工具&#xff1a;【地理标记照片转点】。 打开工具后&#xff0c;输入文件夹&#xff0c;并对相应的参数进行勾选。 右键&#xff0c;图层属性&#xff0c;打开【显示】&#xff0c;对【超链接】设置等参数进行勾选。 找到【符号系统】&#xff0c;点击【高级】&#xff…

关于外贸包裹的那些事

大早晨收到一个客户留言&#xff0c;询问能不能看一下他的货物包裹被送到了哪里&#xff0c;然后客户可以安排他的代理人联系去取包裹&#xff0c;我心里的第一感觉是难道包裹丢失了&#xff1f; 于是赶紧起来查看物流单号&#xff0c;单号显示早在半个多月前已经被他的国内代…

【数据结构】线段树算法总结(区间修改)

知识概览 线段树一般有5个操作&#xff1a; pushup&#xff1a;用子节点更新当前节点信息pushdown&#xff1a;把懒标记往下传build&#xff1a;初始化一棵树modify&#xff1a;修改一个区间query&#xff1a;查询一个区间 不带懒标记&#xff08;支持单点修改&#xff09;的线…

HarmonyOS构建第一个ArkTS应用(Stage模型)

构建第一个ArkTS应用&#xff08;Stage模型&#xff09; 创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。 选择Application应用开发…

从0开始学Git指令

从0开始学Git指令 因为网上的git文章优劣难评&#xff0c;大部分没有实操展示&#xff0c;所以打算自己从头整理一份完整的git实战教程&#xff0c;希望对大家能够起到帮助&#xff01; 初始化一个Git仓库&#xff0c;使用git init命令。 添加文件到Git仓库&#xff0c;分两步…

小红书kos和kop有什么区别,营销玩法有哪些

相信熟悉媒介传播的朋友&#xff0c;对于kol和koc都不陌生。但随着平台的发展和市场的进步&#xff0c;又出现了kos和kop。那么小红书kos和kop有什么区别&#xff0c;营销玩法有哪些&#xff1f; 一、什么是kos和kop KOS&#xff0c;全称叫做Key Opinion Sales&#xff0c;意思…

做外贸多想一步,多走一步

最近在网上给小儿买了一个液晶画画板&#xff0c;自从告诉小儿已经购物需要耐心等待之后&#xff0c;几乎每天小儿要询问几遍&#xff0c;快递到哪里了&#xff1f; 好不容易盼到了&#xff0c;结果打开一看却是个坏的&#xff0c;虽然外包装是好的&#xff0c;但是明显这个快…

编码器脉冲信号测量2路DI高速计数器PNP/NPN转RS-485数据采集模块 YL150-485 标准Modbus RTU协议

特点&#xff1a; ● 编码器解码转换成标准Modbus RTU协议 ● 可用作编码器计数器或者转速测量 ● 支持编码器计数&#xff0c;可识别正反转 ● 也可以设置作为2路独立DI高速计数器 ● 计数值支持断电自动保存 ● DI输入支持PNP和NPN输入 ● 继电器和机械开关输入时可以…

配置MUX VLAN示例(接入层设备)

一、组网需求 在企业网络中&#xff0c;企业所有员工都可以访问企业的服务器。但对于企业来说&#xff0c;希望企业内部部分员工之间可以互相交流&#xff0c;而部分员工之间是隔离的&#xff0c;不能够互相访问。为了解决上述问题&#xff0c;可在连接终端的交换机上部署MUX …

​​​​​​​配置MUX VLAN示例(接入层设备)

组网需求 在企业网络中&#xff0c;企业所有员工都可以访问企业的服务器。但对于企业来说&#xff0c;希望企业内部部分员工之间可以互相交流&#xff0c;而部分员工之间是隔离的&#xff0c;不能够互相访问。 如图1所示&#xff0c;为了解决上述问题&#xff0c;可在连接终端…