分类导航
1 获取分类导航的数据
实现思路:
- 定义 data 数据
- 在 onLoad 中调用获取数据的方法
- 在 methods 中定义获取数据的方法
示例代码如下:
export default {
data() {
return {
// 1. 分类导航的数据列表
navList: [],
}
},
onLoad() {
// 2. 在 onLoad 中调用获取数据的方法
this.getNavList()
},
methods: {
// 3. 在 methods 中定义获取数据的方法
async getNavList() {
const { data: res } = await uni.$http.get('/api/public/v1/home/catitems')
this.navList = res.message
},
},
}
2 渲染分类导航的 UI 结构
- 不能只有一层或者将循环写到view上,否则就会独占一行
-
定义如下的 UI 结构:
<!-- 分类导航区域 --> <view class="nav-list"> <view class="nav-item" v-for="(item, i) in navList" :key="i"> <image :src="item.image_src" class="nav-img"></image> </view> </view>
3 切换到分类页面
-
为
nav-item
绑定点击事件处理函数:<!-- 分类导航区域 --> <view class="nav-list"> <view class="nav-item" v-for="(item, i) in navList" :key="i" @click="navClickHandler(item)"> <image :src="item.image_src" class="nav-img"></image> </view> </view>
-
定义
navClickHandler
事件处理函数:// nav-item 项被点击时候的事件处理函数 navClickHandler(item) { // 判断点击的是哪个 nav if (item.name === '分类') { uni.switchTab({ url: '/pages/cate/cate' }) } }
楼层区域
1 获取楼层数据
实现思路同上
2 渲染楼层的标题
-
定义如下的 UI 结构:
<!-- 楼层区域 --> <view class="floor-list"> <!-- 楼层 item 项 --> <view class="floor-item" v-for="(item, i) in floorList" :key="i"> <!-- 楼层标题 --> <image :src="item.floor_title.image_src" class="floor-title"></image> </view> </view>
-
美化楼层标题的样式:
.floor-title { height: 60rpx; width: 100%; display: flex; }
3 渲染楼层里的图片
-
定义楼层图片区域的 UI 结构:
<!-- 楼层图片区域 --> <view class="floor-img-box"> <!-- 左侧大图片的盒子 --> <view class="left-img-box"> <image :src="item.product_list[0].image_src" :style="{width: item.product_list[0].image_width + 'rpx'}" mode="widthFix"></image> </view> <!-- 右侧 4 个小图片的盒子 --> <view class="right-img-box"> <view class="right-img-item" v-for="(item2, i2) in item.product_list" :key="i2" v-if="i2 !== 0"> <image :src="item2.image_src" mode="widthFix" :style="{width: item2.image_width + 'rpx'}"></image> </view> </view> </view>
-
美化楼层图片区域的样式:
.right-img-box { display: flex; flex-wrap: wrap; justify-content: space-around; } .floor-img-box { display: flex; padding-left: 10rpx; }
4 点击楼层图片跳转到商品列表页
-
在
subpkg
分包中,新建goods_list
页面 -
楼层数据请求成功之后,通过双层
forEach
循环,处理 URL 地址:
```
// 获取楼层列表数据
async getFloorList() {
const { data: res } = await uni.showMsg()
// 通过双层 forEach 循环,处理 URL 地址
res.message.forEach(floor => {
floor.product_list.forEach(prod => {
prod.url = '/subpkg/goods_list/goods_list?' + prod.navigator_url.split('?')[1]
})
})
this.floorList = res.message
}
```
-
把图片外层的
view
组件,改造为navigator
组件,并动态绑定url 属性
的值:<!-- 楼层图片区域 --> <view class="floor-img-box"> <!-- 左侧大图片的盒子 --> <navigator class="left-img-box" :url="item.product_list[0].url"> <image :src="item.product_list[0].image_src" :style="{width: item.product_list[0].image_width + 'rpx'}" mode="widthFix"></image> </navigator> <!-- 右侧 4 个小图片的盒子 --> <view class="right-img-box"> <navigator class="right-img-item" v-for="(item2, i2) in item.product_list" :key="i2" v-if="i2 !== 0" :url="item2.url"> <image :src="item2.image_src" mode="widthFix" :style="{width: item2.image_width + 'rpx'}"></image> </navigator> </view> </view>
5 分支的合并与提交
-
将本地的 home 分支进行本地的 commit 提交:
git add . git commit -m "完成了 home 首页的开发"
-
将本地的 home 分支推送到远程仓库进行保存:
git push -u origin home
-
将本地的 home 分支合并到本地的 master 分支:
git checkout master git merge home git push -u origin master
-
删除本地的 home 分支:
git branch -d home
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 9 天,点击查看活动详情