小程序实现分类页


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 页面模板化很多人没有使用过的方法
Jun 05 Javascript
让图片旋转任意角度及JQuery插件使用介绍
Mar 20 Javascript
js css后面所带参数含义介绍
Aug 18 Javascript
js实现浏览本地文件并显示扩展名的方法
Aug 17 Javascript
javascript动画系列之模拟滚动条
Dec 13 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
Jul 06 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
vue登录路由验证的实现
Dec 13 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
Nov 11 Javascript
史上最为详细的javascript继承(推荐)
May 18 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
Nov 12 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 中文处理函数集合
2008/08/27 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
javascript 特殊字符串
2009/02/25 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Django开发中的日志输出的方法
2018/07/02 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
追悼会主持词
2014/03/20 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
行政处罚事先告知书
2015/07/01 职场文书
环保宣传语大全
2015/07/13 职场文书
2019教师的学习计划
2019/06/25 职场文书
为什么RedisCluster设计成16384个槽
2021/09/25 Redis