《仿盒马》app开发技术分享-- 分类右侧商品列表(18)

鸿蒙小林
• 阅读 6

技术栈

Appgallery connect

开发准备

上一节我们实现了分类页左侧二级分类列表功能,并实现了顶部列表&弹窗跟左侧列表的联动,这一节我们需要在它们联动的基础上继续添加右侧列表的联动效果

功能分析

1.列表展示 当我们选择顶部一级分类列表时,左侧列表展示二级分类列表,右侧商品列表展示二级分类列表下的同品类商品,这时候我们需要很好的控制它们之间的联动效果,保证我们每次的切换,对应的列表都能够正常的刷新,同时也要注意数据之间的对应关系,及时的修改对应的id来帮助我们实现数据的查询。

代码实现

首先我们来实现右侧列表的展示

因为我们是用左侧列表的right_id字段来进行查询的所以,需要在左侧list的item点击事件中先把值传给我们定义的变量,同时监听这个变量,当它修改的时候我们及时触发列表刷新 @State @Watch("onIdChange") rightItemId:number=0

.onClick(() => { this.checkPosition = index this.rightItemId=item.right_id }) 然后我们在监听方法中实现数据查询 async onIdChange(){

this.productListItem.length=0;
let condition = new cloudDatabase.DatabaseQuery(category_product_list);
condition.equalTo("right_id",this.rightItemId)
let listData = await databaseZone.query(condition);

let json = JSON.stringify(listData)
let data1:CategoryProductList[]= JSON.parse(json)
this.productListItem=data1
hilog.info(0x0000, 'testTag', `Succeeded in querying data, result: ${this.productListItem}`);

} 数据查询出来之后进行数据填充

@Builder buildList() { List() { ForEach(this.productListItem, (item: CategoryProductList) => { ListItem() { this.ProductItem(item) } }) } .height('100%') .listDirection(Axis.Vertical) // 排列方向 .divider({ strokeWidth: 0.5, color:"#e6e6e6", startMargin: 20, endMargin: 20 }) // 每行之间的分界线 .edgeEffect(EdgeEffect.Spring) // 滑动到边缘无效果 .onScrollIndex((firstIndex: number, lastIndex: number) => { console.info('first' + firstIndex) console.info('last' + lastIndex) }) } item样式

@Builder ProductItem(item: CategoryProductList) { Flex({ direction: FlexDirection.Row }) { Image(item.url) .margin({ top: 5, left: 8, right: 8 }) .objectFit(ImageFit.Contain) .height(80) .width(80) .borderRadius(10) .objectFit(ImageFit.Cover) Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.SpaceBetween }) { Text(item.name) .fontSize(16) .fontWeight(FontWeight.Bold) .margin({ top: 8 }) .fontColor("#333333") Text(item.text_message) .fontColor("#999999") .fontSize(12) .margin({top:10}) Row() { Text() { Span('¥') .fontSize(12) .fontWeight(FontWeight.Bold) .fontColor(Color.Red) Span(item.price.toString()) .fontSize(18) .fontWeight(FontWeight.Bold) .fontColor(Color.Red) } .margin({ top: 25 }) } } } .margin({ top: 10 }) .onClick(() => {

})

} 之后我们因为在左侧list中可能会点击不同的条目。我们想要的效果是顶部的类目切换,左侧的列表优先选中第一个,同时展示第一个分类的对应商品

所以在监听方法中我们还要把pos初始化为0,同时重新查询左侧列表,因为在左侧列表中我们修改了监听的id,所以会自动触发右侧列表的刷新 async onChange(){ this.checkPosition=0 this.categoryList.length=0 let condition = new cloudDatabase.DatabaseQuery(category_left_list); condition.equalTo("child_id",this.topListItemChildId) let listData = await databaseZone.query(condition); let json = JSON.stringify(listData) let data2:CategoryLeftList[]= JSON.parse(json) this.categoryList=data2 hilog.error(0x0000, 'testTag', Failed to query data, code: ${this.categoryList}); this.queryLeftList(data2[0].child_id) }

我们点击其他类目左侧跟右侧的数据同时都刷新了,到这里我们的功能就实现了

点赞
收藏
评论区
推荐文章
布局王 布局王
11小时前
鸿蒙仓颉语言开发实战教程:实现商品分类页
今天继续为大家带来仓颉语言开发商城应用的实战教程,今天的内容是实现商品分类页。分类页面要在基本布局的基础上增加一些动态效果,比如点击状态的切换和两个列表容器的联动。下面为大家详细介绍。分类列表先来看左侧的分类列表,很明显是一个List容器,样式上比较简单,
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 分类模块顶部导航列表(15)
技术栈Appgalleryconnect开发准备上一节我们实现了购物车商品列表的大部分功能,实现了商品的添加、删除、增减、价格计算等业务,并且都跟云端进行通信。现在我们继续对项目进行改造,这一节我们要改造的内容是分类页,这个页面我们在之前的非端云一体化项目
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 分类模块顶部导航列表弹窗(16)
技术栈Appgalleryconnect开发准备上一节我们实现了分类页面的顶部导航栏列表,并且实现了首页金刚区跟首页导航栏的联动,这一节我们实现导航栏列表的弹窗功能,需要学习的知识点有自定义弹窗,同时我们的数据源需要跟分类页保持一一致。功能分析1.弹窗自定
鸿蒙小林 鸿蒙小林
4小时前
《仿盒马》app开发技术分享-- 分类左侧列表(17)
技术栈Appgalleryconnect开发准备上一节我们实现了分类页面的顶部导航栏全选弹窗列表,并实现了跟顶部列表的点击选中联动效果,这一节我们要实现的功能是,分类模块的左侧列表,它同样也需要跟弹窗列表的点击,顶部列表的点击有联动的效果功能分析1.列表展
鸿蒙小林 鸿蒙小林
4小时前
《仿盒马》app开发技术分享-- 确认订单页(业务逻辑)(30)
技术栈Appgalleryconnect开发准备上一节我们实现了确认订单页的页面绘制和价格计算优惠计算,订单列表展示等功能,这一节我们来实现确认订单页的整个业务逻辑。首先我们要实现的就是地址的选择,然后把我们计算的价格,商品列表等数据保存起来,然后我们开始
鸿蒙小林 鸿蒙小林
4小时前
《仿盒马》app开发技术分享-- 旧物回收订单列表(43)
技术栈Appgalleryconnect开发准备上一节我们实现了订单的创建,并且成功吧数据提交到云数据库中,这一节我们实现的内容是展示我们提交的订单列表功能分析要实现订单列表的展示,首先我们要查询对应用户下的订单列表,查询出对应的订单列表后,展示出对应的数
鸿蒙小林 鸿蒙小林
4小时前
《仿盒马》app开发技术分享-- 兑换订单列表框架(75)
技术栈Appgalleryconnect开发准备上一节我们针对订单兑换的业务逻辑进行了完善,成功的在兑换物品之后修改了用户信息的修改,新增了积分消费的记录。这一节我们实现订单创建之后进入的列表展示页框架。功能分析兑换商品的订单列表框架我们选择使用tabs,
鸿蒙小林 鸿蒙小林
4小时前
《仿盒马》app开发技术分享-- 兑换商品取消订单&取消列表展示(77)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换订单待发货列表的展示逻辑,成功的在列表中展示出来,我们在订单条目中新增了两个按钮,确认揽收与取消订单,这一节我们要实现的功能是订单的取消,以及订单取消后取消列表的展示功能分析要实现订单取消
鸿蒙小林 鸿蒙小林
4小时前
《仿盒马》app开发技术分享-- 兑换商品确认揽收&待收货列表展示(78)
技术栈Appgalleryconnect开发准备上一节我们实现了订单取消功能,实现了tabs切换时的数据刷新,实现了已取消订单的列表展示。这一节我们要实现揽收功能,并且实现待收货的列表展示功能功能分析当我们点击确认揽收的时候,修改订单状态ordertype
鸿蒙小林 鸿蒙小林
4小时前
《仿盒马》app开发技术分享-- 兑换商品收货确认&已完成列表展示(79)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换商品订单的确认揽收功能,实现了tabs切换时的数据刷新,实现了待收货订单的列表展示。这一节我们要实现确认收货功能,并且实现待收货的列表展示功能功能分析当我们点击确认揽收的时候,修改订单状态