小程序分类页实现

分类界页面中,左边是一级目录,右边是一级目录对应的二级目录,根据这个需求,我们数据设计的结构是数组嵌套数组,第一个数组包含一级目录数据,嵌套的数组包含的是二级目录的数据。

主要知识:
1.定义本地json文件
2.本地文件引入
3.小程序列表渲染实现
4.解析本地json

定义本地的json数据源

该文件在page下面的data文件下面的categroryData.js中

//模拟json数据
	var categoryJson=[
	  {
	    id: 'guowei',
	    name: '果味',
	    isChild: true,
	    children: [
	      {
	        child_id: 1,
	        name: "果味"
	      }
	    ]
	  },
	  {
	    id: 'shucai',
	    name: '蔬菜',
	    isChild: true,
	    children: [
	      {
	        child_id: 1,
	        name: "蔬菜"
	      }
	    ]
	  },
	  {
	    id: 'chaohuo',
	    name: '炒货',
	    isChild: true,
	    children: [
	      {
	        child_id: 1,
	        name: "炒货"
	      }
	    ]
	  },
	  {
	    id: 'dianxin',
	    name: '点心',
	    isChild: true,
	    children: [
	      {
	        child_id: 1,
	        name: "点心"
	      }
	    ]
	  },
	  {
	    id: 'ganguo',
	    name: '干果',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'clothes',
	    name: '衣服',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'bag',
	    name: '包包',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'woman',
	    name: '女鞋',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'mansport',
	    name: '男鞋',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'sports',
	    name: '运动鞋',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'hzp',
	    name: '化妆品',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'life',
	    name: '日常用品',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'computer',
	    name: '电脑',
	    isChild: false,
	    children: []
	  },
	  {
	    id: 'phone',
	    name: '手机',
	    isChild: false,
	    children: []
	  }
	]
	//导出数据
	module.exports={
	  dataList:categoryJson
	}
显示列表的页面——categroy.wxml文件
<view class="main">
  <view class="categroy-left">
   <!-- 当前项的id等于item项的id或者当前的下标等于item的下标时,那个就是当前状态- -->
       <view wx:for="{{category}}" wx:key="index" data-id="{{item.id}}" data-index="{{index}}"
           bindtap="switchTab"
           class="cate-list {{curIndex === index?'active':''}}">{{item.name}}</view>
   </view>
   <scroll-view class="categroy-right" scroll-y="{{}}" scroll-into-view="{{toView}}" scroll-with-animation="true">
     <view wx:if="{{category[curIndex].isChild}}">
       <block wx:for="{{category[curIndex].children}}" wx:for-index wx:key="idx">
         <view id="{{item.id}}" class="cate-box">
           <view class="cate-title">
             <text>{{item.name}}</text>
           </view>
         </view>
       </block> 
     </view>
      <!-- 若无数据,则显示暂无数据 -->
      <view class='nodata' wx:else>该分类暂无数据</view>
    </scroll-view>
</view>

说明:
curIndex === index?'active':'' ,根据是否和一级目录index相同,来判断是否选中文字。相同执行.cate-list.active样式,不相同则执行.cate-list样式。

将本地数据引入到列表中——categroy.js文件
//引入本地的json数据
var jsonData=require("../../data/categroryData.js")
Page({
    data: {
      curIndex: 0,
      toView: 'guowei'
    },
    onLoad(){
      this.setData({
        //jsonData.dataList获取data文件中categoryData.js中定义的Json数据,并赋值给category
        category: jsonData.dataList
      })
    },
    switchTab(e){
      //将获取到的item的id和数组的下表值设为当前的id和下标
      this.setData({
        toView: e.target.dataset.id,
        curIndex: e.target.dataset.index
      })
    }  
})
列表样式——category.wxss文件
	.main{
	    width:100%;
	    height: 100%;
	}
	.categroy-left{
	    float: left;
	    width: 150rpx;
	    height: 100%;
	    overflow-y: auto;
	    border-right: 1px solid #ddd;
	    box-sizing: border-box;
	}
	.categroy-left .cate-list{
	    height: 90rpx;
	    line-height: 90rpx;
	    text-align: center;
	    border-left: 3px solid #fff;
	}
	.categroy-left .cate-list.active{
	    color: #AB956D;
	    border-color: #AB956D;
	}
	.categroy-right{
	    float: right;
	    width: 600rpx;
	    height: 100%;
	}
	.cate-box{
	    height: 100%;
	    padding:40rpx;
	    box-sizing: border-box;
	}
	.cate-title{
	    position: relative;
	    height: 30rpx;
	    line-height: 30rpx;
	    padding:30rpx 0 55rpx;
	    text-align: center;
	    color: #AB956D;
	    font-size: 28rpx;
	}
	.cate-title::before{
	    position: absolute;
	    left: 130rpx;
	    top: 43rpx;
	    content: '';
	    width: 70rpx;
	    height: 4rpx;
	    background: #AB956D;
	}
	.cate-title::after{
	    position: absolute;
	    right: 130rpx;
	    top: 43rpx;
	    content: '';
	    width: 70rpx;
	    height: 4rpx;
	    background: #AB956D;
	}
	
	.nodata{
	    font-size: 14px;
	    text-align: center;
	    color: #AB956D;
	    margin-top: 100px;
	  }
效果图

在这里插入图片描述
好啦,大功告成!✌️✌️✌️✌️✌️✌️

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
商城小程序分类实现一般可以借助于CSND(Category, Subcategory, and Nested Category)的方法。CSND的核心理念是通过建立层次化的商品分类结构,使得用户能够更方便地浏览和找到所需商品。 首先,商城管理员可以在小程序后台创建一级分类,如服饰、食品、家居等,并为每个一级分类设定一个唯一的标识码。随后,管理员可以在每个一级分类下创建二级分类,如男装、女装、童装等,二级分类同样需要设定唯一标识码。如果需要,还可以在二级分类下再创建三级分类,如上衣、裤子等。这样就形成了层次化的商品分类结构。 在小程序的前端界面上,用户可以通过点击一级分类跳转到对应的一级分类的商品列表页面,同时也可以在一级分类页面上查看该分类下的二级分类。点击二级分类则跳转到对应的二级分类商品列表页面,同样也可以在二级分类页面上查看该分类下的三级分类。这样不仅可以方便用户快速找到自己感兴趣的商品,也能让用户获得更全面的商品信息。 为了提供更好的用户体验,商城小程序还可以利用搜索功能来辅助分类实现。用户可以在分类页面中使用搜索框输入关键字,小程序将根据关键字在当前分类或者整个商城中搜索匹配的商品,并返回结果给用户。 通过以上的CSND分类实现,商城小程序能够更好地组织和展示商品信息,提高用户的浏览效率和购物体验。同时,商城管理员也能更灵活地管理和更新商品分类,以适应市场和用户需求的变化。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值