027:vue中两列表数据联动,购物车添加、删除和状态更改

news2024/12/24 17:30:55

在这里插入图片描述

第027个

查看专栏目录: VUE ------ element UI


专栏目标

在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。

(1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,updated, beforeDestroy,destroyed,activated,deactivated,errorCaptured,components,)、 $root , $parent , $children , $slots , $refs , props, $emit , eventbus ,provide / inject, Vue.observable, $listeners, $attrs, $nextTick , v-for, v-if, v-else,v-else-if,v-on,v-pre,v-cloak,v-once,v-model, v-html, v-text, keep-alive,slot-scope, filters, v-bind,.stop, .native, directives,mixin,render,国际化,Vue Router等

(2)提供element UI的经典操作:安装,引用,国际化,el-row,el-col,el-button,el-link,el-radio,el-checkbox ,el-input,el-select, el-cascader, el-input-number, el-switch,el-slider, el-time-picker, el-date-picker, el-upload, el-rate, el-color-picker, el-transfer, el-form, el-table, el-tree, el-pagination,el-badge,el-avatar,el-skeleton, el-empty, el-descriptions, el-result, el-statistic, el-alert, v-loading, $message, $alert, $prompt, $confirm , $notify, el-breadcrumb, el-page-header,el-tabs ,el-dropdown,el-steps,el-dialog, el-tooltip, el-popover, el-popconfirm, el-card, el-carousel, el-collapse, el-timeline, el-divider, el-calendar, el-image, el-backtop,v-infinite-scroll, el-drawer等

本文章目录

    • 专栏目标
    • 需求背景
    • 示例效果
    • 示例源代码(共135行)
    • 核心代码

需求背景

本示例是演示两个列表的互动的场景,模仿购物车添加、删除商品的状态. 如果商品添加到购物车上,则显示已加入购物车,否则显示未加入购物车; 购物车中的商品,可以删除,同时更改商品列表的状态。 本文用到了array的改写,添加,删除等方法。

示例效果

在这里插入图片描述

示例源代码(共135行)

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2022-09-06
*/

<template>
	<div class="container">
		<div class="top">
			<h3>商品列表与购物车列表,数据联动 </h3>
			<div class="author">大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
		</div>

		<h5>商品列表</h5>
		<div class="oneLine" v-for="(item,index) in productList" :key="index">
			<div class="fl20"><img :src="item.thumbnail_pic_s" alt=""></div>
			<div class="fl20">{{item.title}} </div>
			<div class="fr20">
				<el-link type="danger" v-show="!item.cart" @click="addCart(index)">未加入购物车</el-link>
				<el-link type="default" v-show="item.cart" @click="removeCart(index,item.title)">已加入购物车</el-link>
			</div>
		</div>


		<h5>购物车列表</h5>
		<div v-for="(item,index) in cartList" :key="item.index" class="oneLine">
			<div class="fl20"><img :src="item.thumbnail_pic_s" alt=""></div>
			<div class="fl20">{{item.title}} </div>
			<div class="fr20">
				<el-link type="danger" @click='delItem(index,item.title)'> 删除</el-link>
			</div>
		</div>
	</div>
</template>

<script>
	export default {
		data() {
			return {
				cartList: [],
				productList: []
			}
		},
		methods: {
			getdata() {
				let url = "/listdata"
				this.$request(url, {}, "GET")
					.then((res) => {
						this.productList = res.data.data
					})
			},

			updateData() {
				for (let i = 0; i < this.productList.length; i++) {
					if (this.cartList.length > 0) {
						let xx = this.productList[i].title;
						this.cartList.some(item => {
							if (item.title == xx) {
								this.$set(this.productList[i], "cart", true);
							}
						})
					}
				}
			},

			addCart(x) {
				console.log(this.productList[x])
				this.cartList.unshift(this.productList[x])
				this.updateData()
			},
			removeCart(x, y) {
				this.cartList = this.cartList.filter((item) => {
					return item.title != y
				})
				this.$set(this.productList[x], "cart", false);
			},
			delItem(i, d) {
				this.cartList.splice(i, 1);

				for (let i = 0; i < this.productList.length; i++) {
					if (this.productList[i].title == d) {
						this.$set(this.productList[i], "cart", false);
					}
				}

			},

		},
		mounted() {
			this.getdata();
		},
		updated() {
			this.updateData()
		},
	}
</script>
<style scoped>
	.container {
		width: 1000px;
		height: 580px;
		margin: 50px auto;
		border: 1px solid green;
	}

	.top {
		margin: 0 auto 30px;
		padding: 10px 0;
		background: #cddeef;
	}

	.oneLine {
		width: 100%;
		height: 50px;
		line-height: 50px;
		background: #eee;
		margin-top: 10px;
		overflow: hidden;
		cursor: pointer;
		text-align: left;
	}

	.oneLine .fl20 {
		float: left;
		padding: 0 10px;
		min-width: 150px;
	}
	.oneLine .fr20 {
		float: right;
		min-width: 50px;
		padding-right: 15px;
	}
</style>

核心代码

updateData() {
				for (let i = 0; i < this.productList.length; i++) {
					if (this.cartList.length > 0) {
						let xx = this.productList[i].title;
						this.cartList.some(item => {
							if (item.title == xx) {
								this.$set(this.productList[i], "cart", true);
							}
						})
					}
				}
			},

			addCart(x) {
				console.log(this.productList[x])
				this.cartList.unshift(this.productList[x])
				this.updateData()
			},
			removeCart(x, y) {
				this.cartList = this.cartList.filter((item) => {
					return item.title != y
				})
				this.$set(this.productList[x], "cart", false);
			},
			delItem(i, d) {
				this.cartList.splice(i, 1);

				for (let i = 0; i < this.productList.length; i++) {
					if (this.productList[i].title == d) {
						this.$set(this.productList[i], "cart", false);
					}
				}

			},

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

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

相关文章

敦煌https证书能做些什么

随着互联网技术的不断发展&#xff0c;人们的生活方式和社交方式也发生了巨大的变化。互联网已经成为人们生活中不可或缺的一部分&#xff0c;它不仅提供了方便快捷的信息获取方式&#xff0c;还为人们提供了一个全新的社交平台。 然而&#xff0c;随着互联网的不断发展&#x…

工业设备状态监测中的声发射技术应用

工业设备状态监测是现代制造业和工业领域的重要一环&#xff0c;它能够帮助企业实时追踪设备的运行状况&#xff0c;及早发现潜在问题&#xff0c;采取预防性维护措施&#xff0c;以提高生产效率、降低维修成本&#xff0c;并确保工作场所的安全性。在这个领域&#xff0c;声发…

IT运维:使用数据分析平台监控H3C交换机

概述 在企业日常运维中&#xff0c;设备种类繁多&#xff0c;日志格式各异&#xff0c;日志量巨大&#xff0c;大量的告警&#xff0c;我们面临着如何统一的存放这些日志&#xff1f;如何对海量的日志进行查看&#xff0c;分析&#xff1f;传统的日志设备无法满足日志格式各异的…

lv3 嵌入式开发-10 NFS服务器搭建及使用

目录 1 NFS服务器介绍 1.1 NFS服务器的介绍 1.2 NFS服务器的特点 1.3 NFS服务器的适用场景 2 NFS服务器搭建 2.1 配置介绍 2.2 常见错误 3 WINDOWS下NFS服务器搭建&#xff08;扩展&#xff09; 1 NFS服务器介绍 1.1 NFS服务器的介绍 nfs&#xff08;Network File Sys…

一道面试题:介绍一下 Fragment 间的通信方式?

Fragment 间的通信可以借助以下几种方式实现&#xff1a; EventBusActivity&#xff08;or Parent Fragment&#xff09;ViewModelResult API 1. 基于 EventBus 通信 EventBus 的优缺点都很突出。 优点是限制少可随意使用&#xff0c;缺点是限制太少使用太随意。 因为 Even…

Android T 窗口层级其三 —— 层级结构树添加窗口(更新中)

序 尚未添加窗口的层级结构树&#xff0c;如图 DisplayArea层级结构中的每一个DisplayArea&#xff0c;都包含着一个层级值范围&#xff0c;这个层级值范围表明了这个DisplayArea可以容纳哪些类型的窗口。 每种窗口类型&#xff0c;都可以通过WindowManagerPolicy.getWindowLa…

【LeetCode-中等题】78. 子集

文章目录 题目方法一&#xff1a;动态规划方法二&#xff1a;递归加回溯(关键----startIndex) 题目 注意&#xff1a;这里的nums数组里面的元素是各不相同的&#xff0c;所以不存在去重操作 方法一&#xff1a;动态规划 public List<List<Integer>> subsets(int[]…

linux编译curl库(支持https)

openssl下载和编译 https://www.openssl.org/source/old/ 解压 tar -xvf openssl-3.0.1.tar.gz cd openssl-3.0.1/配置 ./config如果是编译静态库加入 -fPIC no-shared 如果指定安装路径,使用 --prefix=/usr/local/openssl/选项指定特定目录 编译和安装 make sodu make i…

获取图像的属性、图像通道拆分合并实现

获取图像的属性 import numpy as np import cv2 as cv import matplotlib.pyplot as plt#绘制一个全黑的图像 img np.zeros((256,256,3),np.uint8) #创建图像时要指定类型为uint8 plt.imshow(img[:,:,::-1]) plt.show()#等待用户按任意键推出 cv.waitKey(0) cv.destroyAllWi…

基于改进二进制粒子群算法的含需求响应机组组合问题研究(matlab代码)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现《A Modified Binary PSO to solve the Thermal Unit Commitment Problem》第五章内容&#xff0c;主要做的是一个考虑需求响应的机组组合问题&#xff0c;首先构建了机组组合问题的基本模型&#x…

如何用SSH克隆GitHub项目

诸神缄默不语-个人CSDN博文目录 使用场景&#xff1a;由于不可知的网络问题&#xff0c;无法用HTTPS克隆GitHub项目。 报错fatal: unable to access https://github.com/PolarisRisingWar/llm-throught-ages.git/: GnuTLS recv error (-110): The TLS connection was non-pro…

Nginx__基础入门篇

目录: Nginx的优势 HTTP协议详解 Nginx部署-Yum Nginx配置文件 Nginx编译参数 Nginx基本配置 Nginx日志Log Nginx WEB模块 Nginx 访问限制 Nginx 访问控制 Nginx的优势 Nginx (engine x) 是一个高性能的HTTP(解决C10k的问题)和反向代理服务器&#xff0c;也是一个IM…

如何解决前端传递数据给后端时精度丢失问题

解决精度丢失 有时候我们在进行修改操作时&#xff0c;发现修改既不报错也不生效。我们进行排查后发现服务器端将数据返回给前端时没有出错&#xff0c;但是前端js将数据进行处理时却出错了&#xff0c;因为id是Long类型的&#xff0c;而js在处理后端返回给前端的Long类型数据…

VMware ubuntu空间越用越大

前言 用Ubuntu 1604编译了RK3399的SDK&#xff0c;之后删了一些多余的文件&#xff0c;df - h 已用21G&#xff0c;但window硬盘上还总用了185GB&#xff0c;采用了碎片整理&#xff0c;压缩无法解决 1 启动Ubuntu后, 安装 VMware Tools(T) 、 2 打开ubuntu终端&#xff0c;压…

Jmeter 三种提取方式 —— 关联实例

当请求之间有依赖关系&#xff0c;比如一个请求的入参是另一个请求返回的数据&#xff0c;这时候就需要用到关联处理 Jmeter中常用的关联方法&#xff1a; 正则表达式提取器、XPath提取器、JSON提取器​​​​​​ regex: (.*?)-(.*?)-(.*?)\n.: 匹配除换行符&#xff08;…

Windows下Git Bash的基本使用

创建版本库 git init 初始化完成后&#xff0c;会在目录下创建一个.git的隐藏目录&#xff0c;用来存放项目信息。 、 添加文件到版本库 在项目目录下新建文件readme.txt&#xff0c;内容为 Git is a version control system Git is a free software This is my first Try …

深度学习推荐系统(六)DeepFM模型及其在Criteo数据集上的应用

深度学习推荐系统(六)DeepFM模型及其在Criteo数据集上的应用 在2016年&#xff0c; 随着微软的Deep Crossing&#xff0c; 谷歌的Wide&Deep以及FNN、PNN等一大批优秀的深度学习模型被提出&#xff0c; 推荐系统全面进入了深度学习时代&#xff0c; 时至今日&#xff0c; 依…

uniapp项目实践总结(十一)自定义网络检测组件

导语&#xff1a;很多时候手机设备会突然没网,这时候就需要一个网络检测组件,在没网的时候显示提示用户,提供用户体验。 目录 准备工作原理分析组件实现实战演练案例展示 准备工作 在components新建一个q-online文件夹&#xff0c;并新建一个q-online.vue的组件&#xff1b;…

华为云云服务器评测|安装Java8环境 配置环境变量 spring项目部署 【!】存在问题未解决

目录 引出安装JDK8环境查看是否有默认jar上传Linux版本的jar包解压压缩包配置环境变量 上传jar包以及运行问题上传Jar包运行控制台开放端口访问失败—见问题记录关闭Jar的方式1.进程kill -92.ctrl c退出 问题记录&#xff1a;【!】未解决各种方式查看端口情况联系工程师最后排查…

【C++基础】5. 变量作用域

文章目录 【 1. 局部变量 】【 2. 全局变量 】【 3. 局部变量和全局变量的初始化 】 作用域是程序的一个区域&#xff0c;一般来说有三个地方可以定义变量&#xff1a; 在函数或一个代码块内部声明的变量&#xff0c;称为局部变量。 在函数参数的定义中声明的变量&#xff0c;称…