当前位置:网站首页>【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)
【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)
2022-07-30 05:15:00 【egegerhn】

???欢迎来到???
??魔术之家!!??该文章收录专栏
? 2022微信小程序京东商城实战 ?专栏内容
? 京东商城uni-app项目搭建 ?
? 京东商城uni-app 配置tabBar & 窗口样式 ?
? 京东商城uni-app开发之分包配置 ?
? 京东商城uni-app开发之轮播图 ?
? 京东商城uni-app之分类导航区域 ?
? 京东商城uni-app 首页楼层商品 ?
? 京东商城uni-app 商品分类页面(上) ?
? 京东商城uni-app 商品分类页面(下) ?
? 京东商城uni-app之自定义搜索组件(上) ?
? 京东商城uni-app之自定义搜索组件(中) ?
文章目录
一、渲染右侧二级和三级分类
在上文【小程序项目开发 – 京东商城】uni-app 商品分类页面(上)5.1 章节接口数据格式可以看到,我们的数据,在一级分类下,存贮了二级分类,二级分类又存贮了三级分类,嵌套存贮。
1.1 动态渲染二级分类页面
在data节点定义数据
cateList2data() { return { //当前设备可用高度 windowHeight: '', // 分类页数据 cateList: [], // active 索引判断 active: 0, // 二级分类数据 cateList2: [], }; },请求数据时在函数
getCateList为其赋值(默认为第一个数据,动态数据变化在activeasync getCateList() { // async 异步不能使用箭头函数 const { data: res } = await uni.$http.get('/api/public/v1/categories') // 判断是否赋值成功 if (res.meta.status != 200) return uni.$showMsg() // 一级分类赋值 this.cateList = res.message // 二级分类赋值 this.cateList2 = this.cateList[0].children } }在active激活项函数
activeTap也对其进行动态数据绑定methods: {
// 触击事件绑定
activeTap(options) {
// 传参方法一:
// this.active = options.target.dataset.active
// 传参方法二
this.active = options
// 动态修改二级列表
this.cateList2 = this.cateList[options].children
},
效果:
二、渲染二级分类UI结构
结构
<!-- 右侧container --> <scroll-view scroll-y="true" class="scroll-view-right" :style="{height: windowHeight + 'px'}"> <view class="cate-level2" v-for="(item,index) in cateList2" v-bind:key="index"> <!-- 标题 --> <view class="cate-level2-title">{ {'/ ' + item.cat_name + ' /'}}</view> <!-- / { {item.cat_name}} / --> <!-- 项目容器 --> <view> <view class="cate-level2-list" v-for="(prd,prdindex) in item.children" v-bind:key="prdindex"> <view class="cate-level2-prd"> <image v-bind:src="prd.cat_icon" mode="widthFix"></image> </view> </view> </view> </view> </scroll-view>样式
.cate-level2-title {
font-weight: 700;
padding: 2px;
font-size: 14px;
}
效果:
三、渲染三级分类UI结构
注意:在样式image组件的属性mode尽量不要使用,样式会很难调整
结构
<scroll-view scroll-y="true" class="scroll-view-right" :style="{height: windowHeight + 'px'}"> <view class="cate-level2" v-for="(item,i2) in cateList2" v-bind:key="i2"> <!-- 二级分类项目标题 --> <view class="cate-level2-title">{ {'/ ' + item.cat_name + ' /'}}</view> <!-- / { {item.cat_name}} / --> <!-- 三级分类列表 --> <view class="cate-level3-list"> <!-- 三级分类的item项 --> <view class="cate-level3-list-item" v-for="(prd,i3) in item.children" v-bind:key="i3"> <!-- 三级分类项目的图片 --> <image v-bind:src="prd.cat_icon"></image> <!-- 三级分类项目的文本 --> <text>{ {prd.cat_name}}</text> </view> </view> </view> </scroll-view>样式
.scroll-view-right {
background-color: #fff; .cate-level2-title { font-weight: 700; padding: 2px; font-size: 14px; text-align: center; }}
.cate-level2 {
padding: 10rpx;
padding-bottom: 20rpx;
}// 三级分类样式
.cate-level3-list {
display: flex;
// 允许自动换行
flex-wrap: wrap;.cate-level3-list-item { // 整体三分之一 width: 33.33%; display: flex; flex-direction: column; box-sizing: border-box; justify-content: space-around; align-items: center; image { width: 160rpx; height: 160rpx; margin-bottom: 5rpx; } text { font-size: 25rpx; } }}
效果:
四、切换一级分类重置滚动条位置
- 在data节点定义数据
scrollTop
注意:对scrollTop 赋值前后值不变情况 下会没有效果,如果默认值为0,函数动态赋值也为0,那么组件就会默认为0,视为没有变化,这里解决方法是在0,1变化(1像素默认其为顶部,一点点偏差用户看不出来的??)
data() {
return {
//当前设备可用高度
windowHeight: '',
// 分类页数据
cateList: [],
// active 索引判断
active: 0,
// 二级分类数据
cateList2: [],
// 滚动条位置
scrollTop: 1
};
},
为
scroll-view动态绑定scroll-top属性值切换一级分类,动态设置
scrollTop// 触击事件绑定
activeTap(options) {
// 传参方法一:
// this.active = options.target.dataset.active
// 传参方法二
this.active = options
// 动态修改二级列表
this.cateList2 = this.cateList[options].children
// 重置滚动条位置 动态变化
this.scrollTop = this.scrollTop === 0 ? 1 : 0
},

五、点击三级分类跳转到商品页面
绑定事件函数
定义函数跳转页面,并传参数 商品id
gotoGoodsList: prd => {
uni.navigateTo({
url: ‘/subpackages/goods_list/goods_list?cat_id=’ + prd.cat_id
})
效果:
六、分支的提交和合并
git status注释:查看当前文件状态git add .注释: 提交所有文件到暂存区git commit -m "完成分类页面的开发"注释:提交到本地仓库git push -u origin cate注释:提交到远程仓库的cate分支git branch注释:查看当前分支git checkout master注释:切换到主分支git merge cate注释:合并cate分支git push注释:上传主分支到远程仓库git branch -d cate注释:本地cate分支

?谢谢你的阅读,您的点赞和收藏就是我创造的最大动力!?
边栏推荐
- 容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和集群
- JVM 内存结构 超详细学习笔记(一)
- [Android development] Splash interface / user agreement and privacy policy pop-up window / interface development
- Docker-compose安装mysql
- C language implements highly secure game archives and reads files
- Codeforces Round #809 (Div. 2) A~D
- 一文带你吃透js处理树状结构数据的增删改查
- 坪山区关于开展2022年度科技创新专项资金申报工作的通知
- IIS网站出现401未授权访问
- std::vector中保存指针时用法
猜你喜欢

Internet (software) company project management software research report

翻译 | Kubernetes 将改变数据库的管理方式

从字节码角度带你彻底理解异常中catch,return和finally,再也不用死记硬背了

Summary of skills in using ms project2010 project management software

互联网(软件)公司项目管理软件调研报告

并发编程复习

美国再次加息75个基点 陷入“技术性衰退”?加密市场却呈现复苏力量

Docker-compose安装mysql

Golang go-redis cluster模式下不断创建新连接,效率下降问题解决

JVM 垃圾回收 超详细学习笔记(二)
随机推荐
ugly programmer
MySQL Basics (DDL, DML, DQL)
[Redis Master Cultivation Road] Jedis - the basic use of Jedis
容器化 | 在 KubeSphere 中部署 MySQL 集群
mysql isolation level
RadonDB MySQL on K8s 2.1.4 发布!
Docker-compose install mysql
给小白的 PostgreSQL 容器化部署教程(上)
IIS网站出现401未授权访问
L2-020 功夫传人
无代码开发平台子管理员入门教程
光明区关于促进科技创新的若干措施(征求意见稿)
curl (7) Failed connect to localhost8080; Connection refused
MySQL安装配置教程(超级详细)
LeetCode Algorithm 2326. Spiral Matrix IV
(Hexagon_V65_Programmers_Reference_Manual(13)
是时候不得不学英语了,技多不压身,给自己多条路
从字节码角度带你彻底理解i++与++i
go语言学习笔记四
RadonDB MySQL on K8s 2.1.3 发布!