小程序实现分类页


Posted in Javascript onJuly 12, 2019

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

主要知识:

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;
 }

效果图

小程序实现分类页

好啦,大功告成!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 静态对象和构造函数的使用和公私问题
Mar 02 Javascript
重载toString实现JS HashMap分析
Mar 13 Javascript
JavaScript 高级篇之函数 (四)
Apr 07 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
面向切面编程(AOP)的理解
May 01 Javascript
js改变Iframe中Src的方法
May 05 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
AngularJS模块详解及示例代码
Aug 17 Javascript
JavaScript原生数组Array常用方法
Apr 06 Javascript
vue.js仿hover效果的实现方法示例
Jan 28 Javascript
对layui中table组件工具栏的使用详解
Sep 19 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 #jQuery
小程序实现搜索框
Jun 19 #Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 #Javascript
vue cli安装使用less的教程详解
Jul 12 #Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 #Javascript
django js 实现表格动态标序号的实例代码
Jul 12 #Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 #Javascript
You might like
PHP 图片上传实现代码 带详细注释
2010/04/29 PHP
测试php函数的方法
2013/11/13 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
mouse_on_title.js
2006/08/25 Javascript
Prototype使用指南之enumerable.js
2007/01/10 Javascript
js兼容标准的表格变色效果
2008/06/28 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
Python实用日期时间处理方法汇总
2015/05/09 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
python与php实现分割文件代码
2017/03/06 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
财会自我鉴定范文
2013/12/27 职场文书
保密协议书范本
2014/04/22 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
2014年安全生产责任书
2014/07/22 职场文书
上班离岗检讨书
2014/09/10 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
2014年实习生工作总结
2014/11/27 职场文书
2015年环卫工作总结
2015/04/28 职场文书
2016年元旦主持词
2015/07/06 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
python flask开发的简单基金查询工具
2021/06/02 Python
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫