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

uni-app之旅-day02-分类页面

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 创建cate分支
  • 4.1 渲染分类页面的基本结构
    • 4.2 获取分类数据
    • 4.3 动态渲染左侧的一级分类列表
    • 4.4 动态渲染右侧的二级分类列表
    • 4.5 动态渲染右侧的三级分类列表
    • 4.6 切换一级分类后重置滚动条的位置
    • 4.7 点击三级分类跳转到商品列表页面
    • 4.8 分支的合并与提交


前言

提示:以下是本篇文章正文内容,下面案例可供参考

创建cate分支

基于 master 分支在本地创建 cate 子分支,用来开发分类页面相关的功能:

  • git checkout -b cate

4.1 渲染分类页面的基本结构

<view class="scroll-view-containe"><!-- 左侧滚动视图区域 --><scroll-view class="left-scroll-view" scroll-y="true" :style="{height:wh + 'px'}"><view class="left-scroll-view-item active">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view></scroll-view>
<!-- 右侧的滚动视图区域 --><scroll-view class="left-scroll-view" scroll-y="true" :style="{height:wh + 'px'}"><view class="left-scroll-view-item active">zzzz</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view><view class="left-scroll-view-item">xxx</view></scroll-view>
</view>
  • 动态计算窗口的剩余高度
data(){return{wh:0 }
},
onLoad(){//获取当前系统的信息const sysInfo = uni.getSystemInfoSync();console.log(sysInfo);//为wh窗口可用高度动态赋值this.wh = sysInfo.windowHeight
}
<style lang="scss">
.scroll-view-container {display:flex;.left-scroll-view {width:120px;.left-scroll-view-item{line-height:60px;background-color:'#f7f7f7';text-align:center;font-size:12px;&.active{background-color: #ffffff;position: relative;// 渲染激活项左侧的红色指示边线&::before {content: ' ';display: block;width: 3px;height: 30px;background-color: #c00000;position: absolute;left: 0;top: 50%;transform: translateY(-50%);}}}}}
</style>

4.2 获取分类数据

  • 在 data 中定义接收分类数据源
data(){return {cateList:[],//默认选中项的索引,默认第一项选中active:0}
},
onLoad(){
this.getCateList()
},
methods:{async getCateList(){const {data:res} = await uni.$http.get('/api/public/v1/categories');if(res.meta.status !== 200) return uni.$showMsg();//赋值this.cateList = res.message;}
}

4.3 动态渲染左侧的一级分类列表

  • 循环渲染列表结构
<scroll-view class="left-scroll-view" scroll-y :style="{height: wh + 'px'}"><block v-for="(item, i) in cateList" :key="i"><view class="left-scroll-view-item">{{item.cat_name}}</view></block>
</scroll-view>
  • 循环渲染结构时,为选中项动态添加 .active 类名
<scroll-view class="left-scroll-view" scroll-y :style="{height: wh + 'px'}"><block v-for="(item, i) in cateList" :key="i"><view :class="['left-scroll-view-item',i === active ? 'active':'']">{{item.cat_name}}</view></block>
</scroll-view>
  • 为一级分类的 Item 项绑定点击事件处理函数 activeChanged
<view :class="['left-scroll-view-item',i === active ? 'active':'']" @click="activeChanged(i)">{{item.cat_name}}</view>
methods:{
activeChanged(i){this.active = i
}
}

4.4 动态渲染右侧的二级分类列表

  • data 中定义二级分类列表的数据节点
data(){return{//二级分类列表数据源cateLevel2:[] }
}
  • 修改 getCateList 方法,在请求到数据之后,为二级分类列表数据赋值
  • 修改 activeChanged 方法,在一级分类选中项改变之后,为二级分类列表数据重新赋值
methods:{async getCateList(){const {data:res} = await uni.$http.get('/api/public/v1/categories');console.log(res)if(res.meta.status !== 200) return uni.$showMsg()//转存数据this.cateList = res.messagethis.cateLevel2 = res.message[0].children;},activeChanged(i){
this.active = i;this.cateLevel2 = this.cateList[i].children;console.log(this.cateLevel2)
}
}
  • 循环渲染右侧二级分类列表的 UI 结构
<!-- 右侧的滚动视图区域 --><scroll-view class="left-scroll-view" scroll-y="true" :style="{height:wh + 'px'}"><view  class="cate-lv2" v-for="(item,i) in cateLevel2" :key="i"><view class="cate-lv2-title">/{{item.cat_name}}</view></view></scroll-view>
  • 美化二级分类的标题样式
.cate-lv2-title {font-size: 12px;font-weight: bold;text-align: center;padding: 15px 0;}

4.5 动态渲染右侧的三级分类列表

  • 在二级分类的 组件中,循环渲染三级分类的列表结构
					<view class="cate-lv2-title">/{{item2.cat_name}}</view><!-- 三级分类列表数据 --><view class="cate-lv3-list"><!-- item项 --><view class="cate-lv3-item" v-for="(item3,i3) in item2.children" :key="i3"><!-- 图片链接已失效 --><image :src="item3.cat_icon"></image><text>{{item3.cat_name}}</text></view></view>

4.6 切换一级分类后重置滚动条的位置

data(){return{//滚动条距离顶部的距离scrollTop:0}
}
  • 动态为右侧的 组件绑定 scroll-top 属性的值
<scroll-view class="right-scroll-view" scroll-y="true" :style="{height:wh + 'px'}" :scroll-top="scrollTop"></scroll-view>
  • 切换一级分类时,动态设置 scrollTop 的值
methods:{activeChanged(i){this.scrollTop = this.scrollTop ? 0:1}
}

4.7 点击三级分类跳转到商品列表页面

  • 为三级分类的 Item 项绑定点击事件处理函数如下
	<!-- item项 --><view class="cate-lv3-item" v-for="(item3,i3) in item2.children" :key="i3" @click="gotoGoodsList(item3)"></view>
  • 定义事件处理函数
gotoGoodsList(item3){uni.navigateTo({url:'/subpkg/goods_list/goods_list?cid=' + item3.cat_id})}

4.8 分支的合并与提交

  • 将 cate 分支进行本地提交
git add .
git commit -m "完成了分类页面的开发"
  • 将本地的 cate 分支推送到码云
git push -u origin cate
  • 将本地 cate 分支中的代码合并到 master 分支并推送
git checkout master
git merge cate
git push

相关文章:

uni-app之旅-day02-分类页面

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言创建cate分支4.1 渲染分类页面的基本结构4.2 获取分类数据4.3 动态渲染左侧的一级分类列表4.4 动态渲染右侧的二级分类列表4.5 动态渲染右侧的三级分类列表4.6 …...

鸿蒙harmonyos next flutter通信之BasicMessageChannel获取app版本号

本文将通过BasicMessageChannel获取app版本号&#xff0c;以此来演练BasicMessageChannel用法。 建立channel flutter代码&#xff1a; //建立通道 BasicMessageChannel basicMessageChannel BasicMessageChannel("com.xmg.basicMessageChannel",StringCodec());…...

【文件增量备份系统】MySQL百万量级数据量分页查询性能优化

&#x1f3af; 导读&#xff1a;本文针对大数据量下的分页查询性能问题进行了深入探讨与优化&#xff0c;最初查询耗时长达12秒&#xff0c;通过避免全表计数及利用缓存保存总数的方式显著提升了浅分页查询速度。面对深分页时依然存在的延迟&#xff0c;采用先查询倒数第N条记录…...

音视频入门基础:FLV专题(12)——FFmpeg源码中,解析DOUBLE类型的ScriptDataValue的实现

一、引言 从《音视频入门基础&#xff1a;FLV专题&#xff08;9&#xff09;——Script Tag简介》中可以知道&#xff0c;根据《video_file_format_spec_v10_1.pdf》第80到81页&#xff0c;SCRIPTDATAVALUE类型由一个8位&#xff08;1字节&#xff09;的Type和一个ScriptDataV…...

【AI知识点】分层可导航小世界网络算法 HNSW(Hierarchical Navigable Small World)

HNSW&#xff08;Hierarchical Navigable Small World&#xff09;分层可导航小世界网络算法 是一种高效的近似最近邻搜索&#xff08;Approximate Nearest Neighbor Search, ANN&#xff09; 算法&#xff0c;特别适用于大规模、高维数据集的相似性检索。HNSW 基于小世界网络&…...

ubuntu图形界面右上角网络图标找回解决办法

问题现象&#xff1a; ubuntu图形界面右上角网络图标消失了&#xff0c;不方便联网&#xff1a; 正常应该是下图&#xff1a; 网络寻找解决方案&#xff0c;问题未解决&#xff0c;对于某些场景可能有用&#xff0c;引用过来&#xff1a; 参考方案 Ubuntu虚拟机没有网络图标或…...

maven安装本地jar包到本地仓库

有时候我们需要把本地的 jar 包 install 到本地的 maven 仓库&#xff0c;这时就需要手动install依赖项。例如&#xff0c;把下面的 zhdx-license-1.0.jar 安装到本地 maven 仓库的操作如下&#xff1a; <dependency><groupId>com.zhdx</groupId><artifa…...

1panel申请https/ssl证书自动续期

参考教程 https://hin.cool/posts/sslfor1panel.html #Acme 账户 #1panel.腾讯云dns账号 这里有一步不需要参考,腾讯云dns账号,就是子帐号授权 直接控制台搜索 访问管理 创建用户 授权搜索dns,选择第一个 点击用户名,去掉AdministratorAccess权限 5.点击api密钥生成即可…...

【C语言】指针篇 | 万字笔记

写在前面 在学习C语言过程&#xff0c;总有一个要点难点离不开&#xff0c;那就是大名鼎鼎的C语言指针&#xff0c;也是应为有指针的存在&#xff0c;使得C语言一直长盛不衰。因此不才把指针所学的所有功力都转换成这个笔记。希望对您有帮助&#x1f970;&#x1f970; 学习指…...

使用transformers调用owlv2实现开放目标检测

目录 安装Demo 安装 pip install transformersDemo from PIL import Image, ImageDraw, ImageFont import numpy as np import torch from transformers import AutoProcessor, Owlv2ForObjectDetection from transformers.utils.constants import OPENAI_CLIP_MEAN, OPENAI_…...

大数据技术:Hadoop、Spark与Flink的框架演进

大数据技术&#xff0c;特别是Hadoop、Spark与Flink的框架演进&#xff0c;是过去二十年中信息技术领域最引人注目的发展之一。这些技术不仅改变了数据处理的方式&#xff0c;而且还推动了对数据驱动决策和智能化的需求。在大数据处理领域&#xff0c;选择合适的大数据平台是确…...

Spring Boot框架下的新闻推荐技术

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…...

相亲交友系统的社会影响:家庭结构的变化

随着互联网技术的发展&#xff0c;相亲交友系统已成为许多单身人士寻找伴侣的重要途径。这些平台不仅改变了人们的社交方式&#xff0c;还对家庭结构产生了深远的影响。本文将探讨相亲交友系统如何促使家庭结构发生变化&#xff0c;开发h17711347205并通过简单的Python代码示例…...

C++ 内存池(Memory Pool)详解

1. 基本概念 内存池是一种内存管理技术&#xff0c;旨在提高内存分配的效率。它通过预先分配一块大的内存区域&#xff08;池&#xff09;&#xff0c;然后从中分配小块内存来满足应用程序的需求。这样可以减少频繁的内存分配和释放带来的性能开销。 2. 设计思路 内存池的设…...

css三角形:css画箭头向下的三角形

.arrow { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-style: solid; border-width: 8px 5px 0 5px; /* 上、左、下、右 */ bord…...

CSS属性 - animation

一、基本概念 animation是 CSS 中的一个属性&#xff0c;用于将通过keyframes规则定义的动画应用到元素上。它是一种简写属性&#xff0c;能够在一个声明中设置多个动画相关的子属性。 二、语法结构 基本语法为&#xff1a; animation: name duration timing - function de…...

昇思MindSpore进阶教程--在ResNet-50网络上应用二阶优化实践(下)

大家好&#xff0c;我是刘明&#xff0c;明志科技创始人&#xff0c;华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享&#xff0c;如果你也喜欢我的文章&#xff0c;就点个关注吧 文章上半部分请查看 在ResNet-50网络上应…...

基于大数据的Python+Django电影票房数据可视化分析系统设计与实现

目录 1 引言 2 系统需求分析 3 技术选型 4 系统架构设计 5 关键技术实现 6 系统实现 7 总结与展望 1 引言 随着数字媒体技术的发展&#xff0c;电影产业已经成为全球经济文化不可或缺的一部分。电影不仅是艺术表达的形式&#xff0c;更是大众娱乐的重要来源。在这个背景…...

实景三维技术对光伏产业的发展具有哪些优势?

实景三维技术对光伏产业的发展具有显著的优势&#xff0c;主要体现在提高选址准确性、优化用地规划、促进数据融合应用以及赋能文旅服务领域。‌ 提高选址准确性‌&#xff1a;通过构建高精度的三维地形模型&#xff0c;结合卫星遥感、无人机测绘等技术手段&#xff0c;实景三维…...

四非人的保研之路,2024(2025届)四非计算机的保研经验分享(西南交通、苏大nlp、西电、北邮、山软、山计、电科、厦大等)

文章目录 一、个人背景二、夏令营北京邮电大学CS西南交通大学CS深圳大学CS苏州大学NLP南开大学CS 三、预推免北京邮电大学CS华东师范大学 CS和大数据电子科技大学 CS东北大学 CS厦门大学 信息学院山东大学 CS和SE西安电子科技大学 CS 四、个人经验五、上岸 一、个人背景 学校专…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...