小程序实现分类页

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

主要知识:

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

效果图

好啦,大功告成!

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

(0)

相关推荐

  • 微信小程序首页的分类功能和搜索功能的实现思路及代码详解

    就在昨天,微信宣布了微信小程序开发者工具新增"云开发"功能 下载最新的开发者工具,现在无需服务器即可实现小程序的快速迭代! 分类功能和搜素功能的效果图 1.首页分类功能的实现 boxtwo方法(.js文件) boxtwo: function (e) { var index = parseInt(e.currentTarget.dataset.index) this.setData({ HomeIndex: index }) }, 当在首页点击 分类导航时,会触发这个方法,并传回当前点击

  • 微信小程序外卖选购页实现切换分类与数量加减功能案例

    本文实例讲述了微信小程序外卖选购页实现切换分类与数量加减功能.分享给大家供大家参考,具体如下: 关于微信小程序外卖界面实现选购切换分类与数量加减功能开发步骤: 效果图 实现以下功能 一. 点击分类项,切换右边的食品,并高亮自身 这个实现比较简单,给一个states数组,用于记录每一项分类的状态,点击设为true,wxml渲染时三目运算判断即可. categoryStates = categoryStates.map(function (item, i) { if (index == i) { i

  • 微信小程序的分类页面制作

    微信小程序实的分类页面制作 先上效果图. 这个界面布局难度不是很大,css基础好的,很快就实现了,分类界面,左边是一级目录,右边是一级目录对应的二级目录,根据 这个需求,我们数据设计的结构一定是数组嵌套数组,第一个数组包含一级目录数据,嵌套的数组包含的是二级目录的数据. 代码的实现 classify.js Page({ data: { cateItems: [ { cate_id: 1, cate_name: "护肤", ishaveChild: true, children: [ {

  • 小程序实现分类页

    分类界页面中,左边是一级目录,右边是一级目录对应的二级目录,根据这个需求,我们数据设计的结构是数组嵌套数组,第一个数组包含一级目录数据,嵌套的数组包含的是二级目录的数据. 主要知识: 1.定义本地json文件 2.本地文件引入 3.小程序列表渲染实现 4.解析本地json 定义本地的json数据源 该文件在page下面的data文件下面的categroryData.js中 //模拟json数据 var categoryJson=[ { id: 'guowei', name: '果味', isCh

  • 微信小程序 新建登录页并实现tabBar隐藏

    微信小程序 新建登录页并实现tabBar隐藏 实现的效果如下两张图: app.json 设置的pages的path如下: 在app.json里面设置tabBar的值: 如果你不想在登录页有tabBar的内容,则在app.json 里面tabBar-->list-->pagePath 不能写登录页面的路径,并且首页跳转到登录页时,用 navigateTo 跳转到新页面即可实现tabBar的隐藏,如下图所示: login页面如何设置整个页面都是蓝色(#2da1ed)? 在login.json里面设

  • 微信小程序商品详情页规格属性选择示例代码

    detail.wxml展示页面 <!--轮播图--> <swiper class="swiper" indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" circular="{{circular}}"> &

  • 微信小程序新闻网站详情页实例代码

    准备工作: 1.在微信公众号平台,申请小程序账号,获取appid 2.下载并安装微信开发者工具 3.做不同分辨率设备的自适应:单位使用rpx IPhone6下 1px=1rpx=0.5pt 使用rpx,小程序会自动在不同分辨率下进行转换 首先是项目的入口页面 welcome.wxml <view class="container"> <image class="avatar" src="/images/avatar/1.png"

  • 微信小程序的引导页实现代码

    前一段时间写了一个微信小程序的项目,其中就有引导页面这一功能模块,接下来给大家说一下这一块的怎么实现的以及一个思路吧! 一.引导页 下给大家康康效果图是啥样舍的呢!! 其实就是和轮播图差不多,就是当用户滑动到最后一页的时候显示跳转页面就完事了. 二.代码分析 第一步:先找到小程序目录下面的app.json然后在"pages"配置好页面 { "pages": [ "pages/guidance/guidance", // 配置引导页面 "

  • 微信小程序实现分类菜单激活状态随列表滚动而自动切换效果详解

    目录 view结构 js部分 属性解释 说明 注意 这里主要用到微信小程序提供的SelectorQuery获取页面节点信息实现,组件用的是微信小程序的scroll-view 逻辑就是获取右侧盒子的节点信息,获取右侧子分类的节点信息,当子分类滑动到顶部的之后,则切换左侧分类状态,而且当右侧子分类的位置处于触顶以及包含顶部位置的状态下,同样激活左侧分类状态. view结构 左侧父级分类 <scroll-view class="left" scroll-y > <view

  • 微信小程序文章详情页跳转案例详解

    前面写了一篇小程序访问公众号文章 里面所有的文章列表里面都是跳转了同一篇文章链接,那么,如果所有的列表跳转详情页的时候,跳转对应id所在的文章又该怎么写? index.html <view class="container"> <view wx:for="{{cardTeams}}" wx:key="{{index}}" wx:for-item="cardTeam" class="item"

  • 微信小程序实现登录页云层漂浮的动画效果

    前言 2017年前端火了,微信小程序.weex.reactnative,就连支付宝也搞起了小程序,总感觉这是原生要毁灭的节奏啊,我也乘热上车万一波. 上效果图(GIF动态图) 当我看到这张背景图的时候,强迫症立马来了,这云朵为什么不动,于是开始了一波折腾. 知识点 认识animation animation 属性是一个简写属性,用于设置六个动画属性: 值 描述 animation-name 规定需要绑定到选择器的 keyframe 名称 animation-duration 规定完成动画所花费的

随机推荐