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

《仿盒马》app开发技术分享-- 兑换商品详情(69)

技术栈

Appgallery connect

开发准备

上一节我们实现了兑换商品列表的展示,用户可以在回收之后通过积分页面进入兑换列表页查看当前能够兑换的商品了,我们距离一个完整的app又更近了一步,现在我们要实现的就是当用户点击列表条目的时候能够查看数据详情。

功能分析

在数据列表展示的时候其实我们已经获取到了当前商品的大部分数据,但是为了获取内容的实时性,保证跟云端能够匹配,我们还是通过id查询的方式查询用户点击条目的对应商品数据。查询出对应的商品条目数据后,我们在列表上进行展示

代码实现

首先我们把兑换商品的id 传递到详情页面

 .onClick(() => {let product: ProductDetailModel = {id: item.id};router.pushUrl({url: 'pages/recycle/points/PointsDetailsPage',params: product}, (err) => {if (err) {console.error(`Invoke pushUrl failed, code is ${err.code}, message is ${err.message}`);return;}});})

接收id进行数据查询

@State pointsProduct:PointsProduct|null=nullasync aboutToAppear(): Promise<void> {let databaseZone = cloudDatabase.zone('default');let product = await router.getParams() as ProductDetailModel;let condition1 = new cloudDatabase.DatabaseQuery(points_product);condition1.equalTo("id",product.id)let productDetail = await databaseZone.query(condition1);let json = JSON.stringify(productDetail)let list:PointsProduct[]= JSON.parse(json)this.pointsProduct=list[0]}

展示其他数据到对应的组件

 build() {Stack({alignContent:Alignment.Bottom}){Scroll(this.scroller){Column() {CommonTopBar({ title: "商品详情", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})Image(this.pointsProduct?.url).width('100%').height(300).objectFit(ImageFit.Cover)Column({space:10}){Row(){Text(){Span("$").fontSize(14).fontColor(Color.Red)Span(this.pointsProduct?.points+"").fontSize(22).fontColor(Color.Red)}}.padding(10)Text(this.pointsProduct?.name).fontSize(20).fontColor(Color.Black).margin({left:10}).fontWeight(FontWeight.Bold)Text(this.pointsProduct?.text_message).fontSize(14).fontColor(Color.Gray).margin({left:10})Row(){Text()Text("已兑换 "+this.pointsProduct?.sales_volume).fontSize(14).fontColor(Color.Black)}.padding(10).width('100%').justifyContent(FlexAlign.SpaceBetween)Divider().width('100%').height(5).backgroundColor("#f7f7f7")Row(){Text("发货").fontColor(Color.Gray).fontSize(14)Text(this.pointsProduct?.delivery_time+"").fontSize(14).margin({left:20}).fontColor(Color.Black)}.padding(10).width('100%').justifyContent(FlexAlign.Start)Divider().width('100%').height(5).backgroundColor("#f7f7f7")Row(){Text("参数").fontColor(Color.Gray).fontSize(14)Text("储存:").margin({left:20}).fontSize(14).fontColor(Color.Black)Text(this.pointsProduct?.parameter).fontSize(14).fontColor(Color.Black)}.padding(10).width('100%').justifyContent(FlexAlign.Start)Divider().width('100%').height(5).backgroundColor("#f7f7f7")Row(){Text("规格").fontColor(Color.Gray).fontSize(14)Column({space:5}){Text(this.pointsProduct?.spec_str).fontSize(14).fontColor(Color.Black)}.alignItems(HorizontalAlign.Start).margin({left:20})}.padding(10).width('100%').justifyContent(FlexAlign.Start)Divider().width('100%').height(5).backgroundColor("#f7f7f7")}.alignItems(HorizontalAlign.Start)}.alignItems(HorizontalAlign.Start).backgroundColor(Color.White)}.padding({bottom:80}).height('100%').width('100%')Row(){Text()Blank()Text("立即兑换").padding(10).width('45%').textAlign(TextAlign.Center).backgroundColor("#FCDB29").fontColor(Color.White).borderRadius(15).onClick(()=>{})}.padding(15).justifyContent(FlexAlign.SpaceBetween).width('100%').backgroundColor(Color.White)}.backgroundColor(Color.White)}

到这里我们就实现了兑换物品的商品详情页

相关文章:

  • 现在那个网站做视频最赚钱吗百度风云榜各年度小说排行榜
  • 成都网站制作公司有哪些seo网站优化方案案例
  • 河南网站优化要多少钱网站开发用什么软件
  • 安装网站程序要给那个目录设置权限淘宝店铺运营推广
  • 六安网站制作金狮怎么搜索网站
  • 南通网站制作公司哪家好口碑营销的缺点
  • WPF中的MVVM设计模式
  • 解锁Selenium:Web自动化的常用操作秘籍
  • 第九节 CSS工程化-预处理技术对比
  • DVWA Brute Force漏洞深度分析与利用指南
  • C# VB.NET中Tuple轻量级数据结构和固定长度数组
  • 秋招Day14 - MySQL - 场景题
  • RabbitMQ 利用死信队列来实现延迟消息
  • Linux Sonic Agent 端部署(详细版)(腾讯云)
  • Google Cloud Platform(GCP)实例中使用显卡信息报错问题
  • 裸机项目添加FreeRTOS操作系统--常见报错
  • Kubernetes生命周期管理:深入理解 Pod 生命周期
  • Aerotech系列(4)Aerotech.A3200名空间
  • SpringBoot + MyBatis 事务管理全解析:从 @Transactional 到 JDBC Connection 的旅程
  • Airtable 的数据超出上限,3 种常见应对方式
  • 较大项目 git(gitee, github) 拉取失败解决方法
  • Linux系统环境编程
  • NHDeep智能档案题名(标题)校对工具使用说明
  • Linux线程概念及常用接口(1)
  • Redis 乱码和LocalDateTime类型缓存问题
  • 电商领域企业级应用后端开发 (Java) 就业前景深度分析报告 (2025-2030)