当前位置: 首页 > web >正文

uniapp-商城-71-shop(4-商品列表,详情页中添加商品到购物车的处理)

        从详情页添加商品到购物车,这里还需弹出规格的选项的页面。实现页面联动功能。这样就可以实现详情页添加商品到购物车,弹出规格的选项;如果没有规格可以选择,那至少还是要选数量。

        本文分析了商品详情页添加购物车的功能实现:1. 点击加入购物车时,通过SET_PRO_SPECS(true)触发规格选择弹窗;2. 设置pro-select-specs组件z-index高于其他弹窗确保层级关系;3. 确认添加后需同时关闭规格弹窗和详情弹窗(SET_DETAIL_STATE(false));4. 通过sku_select长度动态判断是否显示规格选择区域。整个流程实现了从详情页到购物车的完整交互,包括规格选择和数量确认功能。

下面进行详细分析:

1、在详情页组件中点击添加到购物车

详情页组件:pro-detail-popup

选规格的组件:pro-select-specs

后面还要处理clickAddCart接口。

其实很简单,弹出选规格的界面,就只是需要改变一下页面的弹出属性 。

2、确认添加商品到购物车接口 clickAddCart

            //点击加入购物车
            clickAddCart(){
                this.SET_PRO_SPECS(true)
            }

其实很简单,改变SET_PRO_SPECS 为true 弹出。

该值来自于前面分析的   goods 的 vuex。

那这里  pro-detail-popup组件   也要到这个 SET_PRO_SPECS 属性。

3、弹窗高度处理就是z轴处理

当点击  确认添加商品到购物车接口 clickAddCart  ,选规格的组件:pro-select-specs  应该浮于所有页面的上面。

主要处理:

	<!-- 产品选择规格组件 --><view class="proSpecs"><u-popup :show="proSpecsState" @close="onClose" closeable round="10" z-index="20001":overlayStyle="{zIndex:20000}"><!-- 这里为什么自定义了 zindex 就是为了显示得更加上面这里 pro-select-specs 组件被pro-detail-popup 调用了这两个组件都弹窗,都有遮罩,那为了 pro-detail-popup 组件触发  pro-select-specs ,就把pro-select-specs 他的zindex 调高一些z-index="20001"   弹窗高于所有:overlayStyle="{zIndex:20000}   遮罩高于 pro-detail-popup默认是 弹窗10075 和 遮罩10070   20000一定高于他们-->

4、选规格页面中,确认键后所有页面该关闭(pro-detail-popup和pro-select-specs都要关闭)

clickConfirm的处理:

设置:SET_DETAIL_STATE 为false

那这个 pro-select-specs 页面要导入这个 SET_DETAIL_STATE  属性

			//点击选择规格确认按钮clickConfirm() {let proItem = JSON.parse(JSON.stringify(this.detailData))if (this.skuArr.length) proItem.skuArr = this.skuArr;proItem.add = truethis.SET_CARS_LIST({item: proItem,num: this.numvalue})this.onClose();this.SET_DETAIL_STATE(false);  //这里也需要关闭详情页得弹窗// 主要是点击详情页面,用户也可以添加到购物车,这时就需要选规格,没有规格他也要选数量。// 因此这里要加到购物车,就也需要改变详情页弹出状态为false,false就不弹出 也就相当于关闭}

5、对于规格栏目的处理

没有规格噶i怎么办?

这里进行了判断,如果没有就不显示。

主要判断就是计算了sku的长度 selectShow 。

<view class="selectWrapper" v-if="selectShow"> 

http://www.xdnf.cn/news/9040.html

相关文章:

  • 机器人工具中心点标定
  • 【Linux】网络--传输层--TCP协议基础
  • 深入浅出对抗学习:概念、攻击、防御与代码实践
  • Ansible常用模块
  • c++算法题
  • 【QT】对话框dialog类封装
  • Unity UGUI 中 InputField 组件处理拖拽超出文本框边界时自动滚动内容的核心协程
  • java虚拟机2
  • 高速通信时代的信号编码利器-PAM4技术解析
  • HTML 文件路径完全指南:相对路径、绝对路径解析与引用技巧
  • git基础语法回顾
  • 重构损失(Reconstruction Loss) L mse​ 和 余弦相似性损失(Cosine Similarity Loss) L cos​
  • AI天气预报进入“大模型时代“:如何用Transformer重构地球大气模拟?
  • 基于cornerstone3D的dicom影像浏览器 第二十三章 mpr预设窗值与vr preset
  • 鸿蒙OSUniApp 开发的图文混排展示组件#三方框架 #Uniapp
  • 3d tiles高级样式设计与条件渲染
  • 基于小米Open-Vela开源系统的高级计算器实现 | 支持C++数学函数与 LVGL UI
  • 2025.05.09【Bubblemap】气泡图深入解析
  • 回调函数的使用
  • 鸿蒙OSUniApp 实现的一键清除输入框内容功能#三方框架 #Uniapp
  • Git切换历史版本及Gitee云绑定
  • 横向联邦学习、纵向联邦学习与联邦迁移学习是联邦学习的三大主要分支
  • 企微客服如何接入ai大模型
  • [网页五子棋]项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)
  • Vue3 + Element Plus 实现用户管理模块
  • 计算机网络学习(八)——MAC
  • 3560. 木材运输的最小成本
  • 时序模型上——ARIMA/MA/AR
  • GaussDB资源冻结与解冻:精细化资源管理的实践与策略
  • Webpack和Vite构建工具有什么区别?各自的优缺点是什么