【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)

简介: 【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)

文章目录

一、渲染右侧二级和三级分类

上文【小程序项目开发 – 京东商城】uni-app 商品分类页面(上)5.1 章节接口数据格式可以看到,我们的数据,在一级分类下,存贮了二级分类,二级分类又存贮了三级分类,嵌套存贮。

1.1 动态渲染二级分类页面

  • 在data节点定义数据cateList2
    data() {
      return {
        //当前设备可用高度
        windowHeight: '',
        // 分类页数据
        cateList: [],
        // active 索引判断
        active: 0,
        // 二级分类数据
        cateList2: [],
      };
    },
  • 请求数据时在函数getCateList为其赋值(默认为第一个数据,动态数据变化在active
      async 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
      },

效果:

18.gif

二、渲染二级分类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;
  }

效果:

19.gif

三、渲染三级分类UI结构

注意:在样式image组件的属性mode尽量不要使用,样式会很难调整

  • 结构
  <!-- 右侧container -->
      <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属性值
 <!-- 右侧container -->
 <scroll-view scroll-y="true" class="scroll-view-right" :style="{height: windowHeight + 'px'}" v-bind:scroll-top="scrollTop">
  • 切换一级分类,动态设置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
 },

21.gif

五、点击三级分类跳转到商品页面

  • 绑定事件函数
<!-- 三级分类的item项 -->
<view class="cate-level3-list-item" v-for="(prd,i3) in item.children" v-bind:key="i3" v-on:click="gotoGoodsList(prd)">
  • 定义函数跳转页面,并传参数 商品id
gotoGoodsList: prd => {
    uni.navigateTo({
      url: '/subpackages/goods_list/goods_list?cat_id=' + prd.cat_id
    })

效果:

22.gif

六、分支的提交和合并

  • 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分支

图片.png

✨谢谢你的阅读,您的点赞和收藏就是我创造的最大动力!✨



相关文章
|
9天前
|
运维 小程序 前端开发
结合圈层营销策略,打造稳定可靠的圈子app系统,圈子小程序!
圈子系统是一种社交平台,用户可按兴趣、职业等创建或加入“圈子”,进行内容发布、讨论和资源共享。开发时需考虑需求分析、技术选型(如PHP、MySQL)、页面设计、功能实现(注册、登录、发布、评论等)、测试优化及运维管理。圈层营销则通过精准化、高端化的方式传递品牌信息,增强客户归属感。圈子小程序基于微信等平台,具备跨平台、便捷性和社交性,开发过程中需明确需求、选择技术框架、设计页面并确保稳定性和流畅性。
|
3月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
771 7
|
3月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
783 1
|
2天前
|
XML 移动开发 开发者
京东商品详情数据接口(H5、APP 端)
京东商品详情数据接口是为H5和APP开发者提供的工具,支持获取商品名称、价格、库存、销量、评价、图片等详细信息,优化应用功能。接口返回JSON或XML格式数据,方便解析处理。适用于电商导购、社交媒体分享、活动推广、价格监控等场景,提升用户体验和购物决策效率。示例代码展示了使用Python发送GET请求的方法。
|
3天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
10天前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
70 3
|
17天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
为什么不加盟线下陪玩APP小程序平台,而是自建平台?
自建线下陪玩APP平台相比加盟,能避免利润抽成,确保所有收益归己,同时提供更高的运营灵活性和稳定性,不受制于合同限制或总平台决策变动,更适合追求长期发展的创业者。
|
2月前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
3月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
267 1

热门文章

最新文章