小程序实现分类页


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 相关文章推荐
csdn 博客的css样式 v3
Feb 24 Javascript
Web开发者必备的12款超赞jQuery插件
Dec 03 Javascript
解决jquery中美元符号命名冲突问题
Jan 08 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
浅谈javascript回调函数
Dec 07 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
Aug 03 Javascript
vue实现的组件兄弟间通信功能示例
Dec 04 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
vue 中的 render 函数作用详解
Feb 28 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 Javascript
解决vue自定义指令导致的内存泄漏问题
Aug 04 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核心代码分析require和include的区别
2011/01/02 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
JavaScript window.location对象
2014/11/14 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
OpenLayers实现图层切换控件
2020/09/25 Javascript
Python help()函数用法详解
2014/03/11 Python
python解析xml文件实例分析
2015/05/27 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
python switch 实现多分支选择功能
2020/12/21 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
波兰珠宝品牌:YES
2019/08/09 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
2014年学雷锋活动总结
2014/06/26 职场文书
公司授权委托书范文
2014/09/21 职场文书
银行授权委托书格式
2014/10/10 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
2015年党建工作总结
2015/03/30 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
解析MySQL binlog
2021/06/11 MySQL