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

在这里插入图片描述

第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.rhkb.cn/news/128417.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaee spring整合mybatis spring帮我们创建dao层

项目结构 pom依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

buuctf crypto 【RSA2】解题记录

1.打开文件 2.写脚本 3.16进制转字符串

【C++】动态内存管理

【C】动态内存管理 new和delete用法内置类型自定义类型抛异常定位new 刨析new和delete的执行与实现逻辑功能执行顺序newdelete 功能实现operator new与operator delete malloc free与new delete的总结 在我们学习C之前 在C语言中常用的动态内存管理的函数为&#xff1a; mallo…

UE5、CesiumForUnreal实现瓦片坐标信息图层效果

文章目录 1.实现目标2.实现过程2.1 原理简介2.2 cesium-native改造2.3 CesiumForUnreal改造2.4 运行测试3.参考资料1.实现目标 参考CesiumJs的TileCoordinatesImageryProvider,在CesiumForUnreal中也实现瓦片坐标信息图层的效果,便于后面在调试地形和影像瓦片的加载调度等过…

用于独立系统应用的光伏MPPT铅酸电池充电控制器建模(Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

组件以及组件间的通讯

组件 & 组件通讯 :::warning 注意 阅读本文章之前&#xff0c;你应该先要了解 ESM 模块化的 import export&#xff0c;如需要请查看 ESM 模块化。 ::: 上一篇有介绍到什么是组件化&#xff0c;就是把一个页面拆分成若干个小模块&#xff0c;然后重新组成一个页面。其中的…

4.3.3 【MySQL】Redundant行格式

现在我们把表demo 的行格式修改为 Redundant &#xff1a; 为了方便大家理解和节省篇幅&#xff0c;我们直接把表 demo 在Redundant 行格式下的两条记录的真实存储数据提供出来&#xff0c;之后我们着重分析两种行格式的不同即可。 下边我们从各个方面看一下 Redundant 行格式有…

fastjson漏洞复现

文章目录 启动环境漏洞复现下载bp插件漏洞扫描dnslog测试是否向外请求资源用工具构造rmi服务器 反弹shell 启动环境 到vulhub目录下 cd vulhub/fastjson/1.2.24-rce安装环境并启动&#xff1a; sudo docker-compose up -d && sudo docker-compose up -d启动成功&…

ARM/X86工业级数据采集 (DAQ) 与控制产品解决方案

I/O设备&#xff0c;包括信号调理模块、嵌入式PCI/PCIE卡、便携式USB模块、DAQ嵌入式计算机、模块化DAQ系统&#xff0c;以及DAQNavi/SDK软件开发包和DAQNavi/MCM设备状态监测软件。 工业I/O产品适用于各种工业自动化应用&#xff0c;从机器自动化控制、测试测量到设备状态监测…

面向OLAP的列式存储DBMS-16-[ClickHouse]python操作ClickHouse

clickhouse查询表容量方法 1 clickhouse常用命令 #clickhouse-client进入客户端 pda1:)show databases; pda1:)create database test; pda1:)use system; pda1:)show tables; pda1:) exit; 其余的就是常规的一些sql语句。 2 python操作clickhouse 2.1 clickhouse-driver(9…

flume1.11.0安装部署

1、准备安装包apache-flume-1.11.0-bin.tar.gz&#xff1b; 上传&#xff1b; 2、安装flume-1.11.0&#xff1b; 解压&#xff1b; tar -zxvf apache-flume-1.11.0-bin.tar.gz -C /opt/server 进入conf目录&#xff0c;修改flume-env.sh&#xff0c;配置JAVA_HOME&#xff1b…

nbcio-boot移植到若依ruoyi-nbcio平台里一formdesigner部分(一)

nbcio-boot项目移植到ruoyi-nbcio项目中&#xff0c; 今天主要讲formdesigner的移植 1、把formdesigner的源代码拷贝到component里&#xff0c;并修改成formdesigner&#xff0c;如下&#xff1a; 2、form下的index.vue修改如下&#xff1a; 主要是修改新增&#xff0c;修改…

个人博客系统-测试用例+自动化测试

一、个人博客系统测试用例 二、自动化测试 使用selenium4 Junit5单元测试框架&#xff0c;来进行简单的自动化测试。 1. 准备工作 &#xff08;1&#xff09;引入依赖&#xff0c;此时的pom.xml文件&#xff1a; <?xml version"1.0" encoding"UTF-8&quo…

华为数通方向HCIP-DataCom H12-821题库(单选题:301-320)

第301题 某台路由器运行 IS-IS,其输出信息如图所示,下列说法错误的是? [R1]display isis sdb local verboseDatabase information for ISIS(1) Level-1 Link State Database LSPID Seq Num Checksum Holdtime…

Linux —— 信号阻塞

目录 一&#xff0c;信号内核表示 sigset_t sigprocmask sigpending 二&#xff0c;捕捉信号 sigaction 三&#xff0c;可重入函数 四&#xff0c;volatile 五&#xff0c;SIGCHLD 信号常见概念 实际执行信号的处理动作&#xff0c;称为信号递达Delivery&#xff1b;信…

深眸科技自研轻辙视觉引擎,以AI机器视觉赋能杆号牌识别与分拣

电线杆号牌作为电力行业标识的一种&#xff0c;相当于电线杆的“身份证”&#xff0c;担负着宣传电力知识、安全警示的作用&#xff0c;用于户外使用标记输电线路电压等级、线路名称、杆塔编号等&#xff0c;能够清晰地记录电力线路杆的信息&#xff0c;并为电力线路的更改以及…

面试问题总结(1)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

Matlab 如何计算正弦信号的幅值和初始相角

Matlab 如何计算正弦信号的幅值和初始相角 1、概述 如果已知一个正弦信号的幅值&#xff0c;在FFT后频域上该信号谱线的幅值与设置值不同&#xff0c;而是大了许多&#xff1b;如果不知道某一正弦信号的幅値&#xff0c;又如何通FFT后在頻域上求出该正弦信号的幅值呢? 2、…

Python 交易指南:利用 RSI

一、说明 RSI是相对强弱指数&#xff08;Relative Strength Index&#xff09;的缩写&#xff0c;是一种技术指标。该指标是用来测量股票或其他交易品种的价格波动强度和速度的&#xff0c;属于动量型指标。RSI常用于技术分析和交易策略中&#xff0c;可以帮助交易者判断市场的…

C语言:三子棋小游戏

简介&#xff1a; 目标很简单&#xff1a;实现一个 三子棋小游戏。三子棋大家都玩过&#xff0c;规则就不提及了。本博文中实现的三子棋在对局中&#xff0c;电脑落子是随机的&#xff0c;不具有智能性&#xff0c;玩家的落子位置使用键盘输入坐标。下面开始详细介绍如何实现一…