实现商品列表

利用组件实现…

Tabs

组件界面编写

<view class="top"><view wx:for="{{tabList}}" wx:key="index" class="title {{index == curr ? 'active':''}}" bindtap="tapwhere" data-index="{{index}}">{{item}}</view>
</view><navigator class="goods" wx:for="{{GoodsList}}" wx:key="cat_id" url="/pages/goods_detail/goods_detail?goods_id={{item.goods_id}}">
<view class="img"><image src="{{item.goods_small_logo==''?'https://ww1.sinaimg.cn/large/007rAy9hgy1g24by9t530j30i20i2glm.jpg':item.goods_small_logo}}" mode="widthFix" />
</view>
<view class="context">{{item.goods_name}}<view class="price">¥{{item.goods_price}}</view></view>
</navigator>

组件样式

.top{display: flex;justify-content: center;
}
.top .title{display: flex;flex: auto;height: 100rpx;align-items: center;justify-content: center;border-bottom: #666666 solid 1rpx;
}
.top .active{color: var(--themeColor);border-bottom: var(--themeColor) solid 1rpx;
}
.goods{display: flex;height: 280rpx;border-bottom: #666666 solid 1rpx;
}
.goods .img{flex: 2;width: 60%;justify-content: center;
}
.goods .img image{transform: scale(0.8)
}
.goods .context{flex: 3;font-size: 30rpx;margin-top: 20rpx;
}
.goods .context .price{color: red;font-size: 40rpx;margin-top: 50rpx;
}

组件js(属性、方法)

tabList上方三个导航栏
GoodsList商品列表
curr:当前选中的导航栏下标…

// components/Tabs.js
Component({/*** 组件的属性列表*/properties: {tabList:[],GoodsList:[],curr:0},/*** 组件的初始数据*/data: {},/*** 组件的方法列表*/methods: {//处理选中的导航栏下标,实现下方红色边框跟随....tapwhere(e){this.triggerEvent('tapwhere',{index:e.target.dataset.index})}}
})

开始写列表页

引入搜索框和tab组件,并且允许下拉刷新…

{"usingComponents": {"search-input":"../../components/SearchInput/SearchInput","tab":"../../components/Tabs/Tabs"},"enablePullDownRefresh": true,"backgroundTextStyle": "dark","navigationBarTitleText": "商品列表"
}

界面编写

引用的两个组件,给tab组件传参,传递数据…

<view>
<search-input></search-input>
<tab tabList="{{tabList}}" curr="{{curr}}" GoodsList="{{GoodsList}}" bind:tapwhere="_where"></tab>
</view>

JS方法编写

data属性:

  • tabList:导航栏的数据
  • GoodsList:商品列表数据
  • curr:当前选中的下标
  • pagenum:当前页码
  • pagetotal:总数据量
  • cid 商品分类id(用于查询对应分类的id,由商品分类传递过来.)

方法:

  • _where:用于传递选中的选项卡下标,返回给组件…
  • getgoods:获取商品列表并且赋值给GoodsList
  • 然后还有一个下拉刷新事件和上拉继续加载事件…
import {request} from '../../utils/request'
Page({/*** 页面的初始数据*/data: {tabList:['综合','销量','价格'],GoodsList:[],curr:0,pagenum:1,pagetotal:0,cid:0},_where(e){this.setData({curr:e.detail.index})},async getgoods(opt){if(opt!=undefined){console.log('有数据');this.setData({cid:opt.cid})}let ret=await request('goods/search',{pagenum:this.data.pagenum,pagesize:10,cid:this.data.cid})if(this.data.GoodsList.length!=0){var good=this.data.GoodsList;}this.setData({GoodsList:ret.data.message.goods,pagetotal:ret.data.message.total});good=[...good,...this.data.GoodsList];this.setData({GoodsList:good,})},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {// console.log(options);this.getgoods(options)},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {this.data.GoodsList=[];this.data.pagenum=1;this.getgoods();},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {if(this.data.pagenum===Math.ceil(this.data.pagetotal/10)){wx.showToast({title: '已经没有商品啦.....',icon: 'none',duration: 2000//持续的时间})}else{wx.showToast({title: '加载中...',icon: 'loading',duration: 800//持续的时间})this.data.pagenum++;this.getgoods();}},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

效果图

刚进来时…

滑到底部时

没数据时:

下拉刷新:

成功实现~

微信小程序商城项目实战(第三篇:商品列表)相关推荐

  1. 微信小程序商城项目实战(第十一篇:商品收藏+历史浏览管理)

    商品收藏+历史浏览管理 商品收藏+历史浏览页面 分析 代码实现 效果图展示 商品收藏: 历史浏览: 商品收藏+历史浏览页面 共用一个页面 分析 顶部改为"商品收藏" 上方为导航栏: ...

  2. 微信小程序商城项目实战(第七篇:生成订单支付页)

    订单支付 分析 代码实现 效果图展示 分析 顶部改为"支付" 上方为地址,跳转至地址管理,可修改 下方为订单信息 最下方显示所需支付金额以及支付按钮,点击支付则支付成功跳转订单页 ...

  3. 微信小程序商城项目实战(第十篇:订单管理)

    订单管理 订单页面 分析 代码实现 效果图展示 订单详情页 分析 详解 效果图 付完款的 未付款的 订单页面 分析 顶部改为"我的订单" 上方为导航栏:全部.待付款.待发货.退款/ ...

  4. 微信小程序商城项目实战(第五篇:购物车)

    实现购物车 json里边设置一下页面标题"navigationBarTitleText": "购物车" 界面组成 上方由一个按钮跳转到收货地址管理, 中间为购物 ...

  5. 微信小程序商城项目实战(完结篇:意见反馈)

    微信小程序商城项目完结 意见反馈 代码实现 首先修改标题并且使用之前写好的tab组件 编写界面 编写样式 逻辑处理js 效果图 意见反馈 做假的意见反馈,主要练习一下微信小程序文件上传api以及样式界 ...

  6. 微信小程序商城项目实战(第一篇:项目搭建与首页)

    商城项目第一篇 项目搭建 项目结构 编写整个项目中需要用到的功能 request.js 全局样式 组件(搜索框) 首页 代码编写 效果图 项目搭建 后端接口:https://www.showdoc.c ...

  7. 微信小程序商城项目实战(第二篇:分类页)

    实现分类页 修改json文件并且引入搜索框 {"usingComponents": {"search-input":"../../components ...

  8. 《微信小程序商城开发实战》笔者的新书,欢迎各位粉丝上京东购买

    编辑推荐 在当今移动互联网大潮中,微信应用凭借其庞大的用户基数和极强的用户黏性牢牢地占据着移动App应用的头把交椅之位,据相关统计,微信月活跃用户已达10亿之多,且占据着中国用户30%以上的应用时间, ...

  9. 推荐一个微信小程序商城项目

    推荐一款实用的微信小程序商城项目,这个项目不仅有商城基本的功能,比如:商品管理.订单管理.用户管理,还有分销功能,具备广告.优惠券等功能. 技术选型 后端采用 Spring 技术栈,使用到的框架主要包 ...

  10. 微信小程序商城搭建,微信小程序商城源码,微信小程序商城项目

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序商城系统,前台用户使用小程序,小程序使用微信开发者工具开发:后台管理使用基PP+MySql的B/S架构,开发工具使用phpstor ...

最新文章

  1. 2021年,AI有潜力改善农业的十种路径
  2. 【 Verilog HDL 】基本运算逻辑的Verilog HDL 模型
  3. 百度前端技术学院task13源代码
  4. 如何选择正确的激活函数?
  5. 两种方法设置html表格的宽高
  6. synchronized(this)用法
  7. 浅析epoll-为何多路复用I/O要使用epoll
  8. 数据分析学习笔记——数据可视化
  9. .NET | 多线程下的调用上下文 : CallContext
  10. MySQL安装和完全卸载-Linux ubantu18.04
  11. 网络:传输层 TCP报文格式解析
  12. Android大学课件SQLite3 数据库操作
  13. 第四篇、Python文件处理
  14. Linux开发_快速定位关键字与变量
  15. SOS Dynamic Programming
  16. 通达OA智能开发平台CRM系统 实现数据的自动计算
  17. sql填充空值_如何在SQL中使用先前的非空值填充稀疏数据
  18. android wifi检测呼吸,WiFi已经逆天了 现在能检测到你的呼吸
  19. 从一个例子看ASCII点阵字库的应用原理
  20. bzoj5369: [PKUSC2018]最大前缀和 (状压dp)

热门文章

  1. Linux程序设计第二版练习题(第七章)
  2. 文件后缀名怎么修改?文件不显示后缀名怎么办
  3. mysql 存储用户头像_微信授权后用户头像保存到服务器实现方法
  4. 五、pygame做一个简单的五子棋游戏
  5. 如何在水经注会员中心购买流量下载地图
  6. oppo r17进入9008模式
  7. CSS(刷漆)学习总结
  8. 使用Audition将PCM格式转Wav格式
  9. 热传导问题的matlab计算,热传导问题的MATLAB数值计算
  10. yolov5 行人 车辆 跟踪 检测 计数