【微信小程序】 列表查询功能
对应本地生活案例:
https://www.bilibili.com/video/BV1834y1676P?p=52

HTML代码部分:
就是普通的wx-for指令遍历
<!--pages/classPage/classPage.wxml-->
<!-- <text>pages/classPage/classPage.wxml</text> -->
<!-- <text> id: {{query.id}} | 分类: {{query.name}} </text> -->
<view
class="item"
wx:for="{{list}}"
wx:key="id"
wx:for-index="idx"
wx:for-item="item"
>
<!-- 左边展示图片 -->
<view class="thumb">
<image src="{{item.images[0]}}"></image>
</view>
<!-- 右边展示文本 -->
<view class="content">
<text class="title">{{item.name}}</text>
<text>电话:{{tools.phoneNoHandle(item.phone)}}</text>
<text>地址:{{item.address}}</text>
<text>营业时间:{{item.businessHours}}</text>
</view>
</view> <!-- 导入wxs脚本 -->
<wxs src="../../utils/tools.wxs" module="tools"></wxs>
CSS样式代码:
/* pages/classPage/classPage.wxss */ /* 左右布局 */
.item {
display: flex;
justify-content: space-around; padding: 15rpx;
border: 1rpx solid #efefef;
border-radius: 8rpx;
margin: 15rpx; /* 盒子阴影 */
box-shadow: 1rpx 1rpx 15rpx #ddd;
} /* 图片控制 */
.thumb image {
width: 250rpx;
height: 250rpx;
display: block; margin-right: 15rpx;
border-radius: 8rpx;
}
/* 文本布局 */
.content {
display: flex;
flex-direction: column;
justify-content: space-around;
/* 字体拉小 */
font-size: 24rpx;
} .title {
font-weight: bolder;
}
JS代码部分:
1、完成接口请求初始化数据列表加载
2、配置上拉触底功能开启,在上拉加载的钩子函数中编写翻页请求,
- 1、注意是叠加数据列表,而不是重置
- 2、配置微信加载提示弹窗
3、如何判断翻到了最后一页,数据全部查完的状态
4、设置节流阀变量,控制请求加载的时候不能重复请求
5、配置下拉刷新功能开启
- 1、重置翻页变量
- 2、将停止下拉效果入参到请求方法中实现调用
// pages/classPage/classPage.js
Page({ /**
* 页面的初始数据
* 小程序的data 不能使用嵌套对象,this.setData方法会覆盖data属性
*/
data: {
query: {}, // 导航接参
list:[], // 列表容器
pageIndex: 1, // 翻页参数
pageSize: 10, // 每次请求10条数据
total: 0, // 总记录数 isLoading: false // 请求阀门
}, /**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
// 导航接参
this.setData({ query: options}) // 请求接口
this.getListData()
},
/**
* 获取每个具体分类的数据列表
* GET请求
* https://www.escook.cn/categories/:cate_id/shops
* _page 表示请求第几页的数据
* _limit 表示每页请求几条数据
*
*/
getListData(callBack) {
// 打开阀门
this.setData({ isLoading: true })
// 开启加载提示
wx.showLoading({ title: '数据加载中' }) // 请求数据
wx.request({
url: `https://www.escook.cn/categories/${this.data.query.id}/shops`,
method: 'GET',
data: {
_page: this.data.pageIndex,
_limit: this.data.pageSize
},
success: ( { data: res, header }) => {
console.log(res)
// 保存加载的数据
this.setData({
list: [
...this.data.list,
...res
],
total: parseInt(header['X-Total-Count']), // 内部对象不会保存起来
pageIndex: this.data.pageIndex,
pageSize: this.data.pageSize
}) console.log(this.data.total)
},
complete: () => {
// 关闭加载提示
wx.hideLoading()
// 关闭阀门
this.setData({ isLoading: false }) // 停止下拉刷新的操作也放在这里
// wx.stopPullDownRefresh()
callBack && callBack()
}
})
}, /**
* 生命周期函数--监听页面初次渲染完成
* 页面初次渲染完成时触发。
* 一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
* 注意:对界面内容进行设置的API如wx. setNavigationBarTitle,请在onReady之后进行。
*/
onReady() {
// 从onLoad函数加载到query参数后 改变导航标题
wx.setNavigationBarTitle({
title: this.data.query.name
})
}, /**
* 生命周期函数--监听页面显示
*/
onShow() { }, /**
* 生命周期函数--监听页面隐藏
*/
onHide() { }, /**
* 生命周期函数--监听页面卸载
*/
onUnload() { }, /**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
// 重置页数、总记录数、和容器
this.setData({
pageIndex: 1,
total: 0,
list: []
})
// 重新请求 并且请求完成停止刷新效果
this.getListData(() => {
wx.stopPullDownRefresh()
})
}, /**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
/**
* 判断翻页是否超过总数据
* 3.判断是否还有下一页数据,如果下面的公式成立,则证明没有下一页数据了:
* 页码值 * 每页显示多少条数据 >= 总数据条数
* page * pageSize >= total
*
*/
let pageCount =
this.data.pageIndex * this.data.pageSize
if (pageCount >= this.data.total) {
wx.showToast({
icon: 'none', // 不设置任何图标
title: '已经到底了', // 提示文本
duration: 3000, // 持续3秒
})
return
} // 根据阀门状态判断是否继续请求
if (this.data.isLoading) return
// 上拉加载翻一页
this.setData({ pageIndex: this.data.pageIndex + 1 })
this.getListData()
}, /**
* 用户点击右上角分享
*/
onShareAppMessage() { },
})
页面JSON配置:
{
"usingComponents": {},
"onReachBottomDistance": 200,
"enablePullDownRefresh": true,
"backgroundColor": "#efefef",
"backgroundTextStyle": "dark"
}
WXS模块:
将电话号码加入横杠分隔符的方法
13888888888 -> 138-8888-8888
// utils/tools.wxs
/**
* 手机号处理
* @param {} phone
*/
function phoneNoHandle(phone) {
if (11 !== phone.length) return phone
var arr = phone.split('') // 插入减号
arr.splice(3, 0, '-')
arr.splice(8, 0, '-')
return arr.join('')
} /**
* 导出wxs模块
*/
module.exports = {
phoneNoHandle: phoneNoHandle
}
【微信小程序】 列表查询功能的更多相关文章
- 微信小程序-列表渲染多层嵌套循环
微信小程序-列表渲染多层嵌套循环 入门教程之列表渲染多层嵌套循环,目前官方的文档里,主要是一维数组列表渲染的案例,还是比较简单单一,给刚入门的童鞋还是无从入手的感觉. <view wx:for= ...
- 微信小程序调用蓝牙功能控制车位锁
第一次学用微信小程序,项目需要,被逼着研究了一下,功能是调用微信小程序的蓝牙功能,连接上智能车位锁,控制升降,大概步骤及调用的小程序接口API如下: 1.打开蓝牙模块 wx.openBluetooth ...
- 微信小程序实战 购物车功能
代码地址如下:http://www.demodashi.com/demo/12400.html 一.准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.com/ ...
- 微信小程序在线支付功能使用总结
最近需要在微信小程序中用到在线支付功能,于是看了一下官方的文档,发现要在小程序里实现微信支付还是很方便的,如果你以前开发过服务号下的微信支付,那么你会发现其实小程序里的微信支付和服务号里的开发过程如出 ...
- 微信小程序开发-蓝牙功能开发
0. 前言 这两天刚好了解了一下微信小程序的蓝牙功能.主要用于配网功能.发现微信的小程序蓝牙API已经封装的很好了.编程起来很方便.什么蓝牙知识都不懂的情况下,不到两天就晚上数据的收发了,剩下的就是数 ...
- 获取微信小程序列表渲染 index
微信小程序列表渲染 index(索引值)通过 wx:for-index="index" 来获取: <view class="item" wx:for=&q ...
- 微信小程序--火车票查询
微信小程序--火车票查询 写在最前面 微信小程序自九月份推出内测资格以来,经历了舆论热潮到现在看似冷清,但并不意味着大家不那么关注或者不关注了.我想不管是否有内测资格,只要是感兴趣的开发者已经进入潜心 ...
- 微信小程序火车票查询 直取12306数据
最终效果图: 样式丑哭了,我毕竟不是前端,宗旨就是练练手,体验微信小程序的开发,以最直接的方式获取12306数据查询火车票. 目录结构: search1是出发站列表,search2是目的站列表,命名没 ...
- 微信小程序之购物车功能
前言 以往的购物车,基本都是通过大量的 DOM 操作来实现.微信小程序其实跟 vue.js 的用法非常像,接下来就看看小程序可以怎样实现购物车功能. 需求 先来弄清楚购物车的需求. 单选.全选和取消, ...
- [转]微信小程序之购物车功能
本文转自:https://www.cnblogs.com/linxin/p/6834206.html 前言 以往的购物车,基本都是通过大量的 DOM 操作来实现.微信小程序其实跟 vue.js 的用法 ...
随机推荐
- mac m1使用docker安装oracle
mac m1使用docker安装oracle数据库 本学期开始学习数据库原理,老师课上讲到课堂作业使用的是oracle 11g,然而我去官网却发现只有Windows和Linux版本的,并没有发现mac ...
- js 实现密码框的查看和隐藏
大江东去,浪淘尽,千古风流人物.故垒西边,人道是,三国周郎赤壁.乱石穿空,惊涛拍岸,卷起千堆雪.江山如画,一时多少豪杰.遥想公瑾当年,小乔初嫁了,雄姿英发.羽扇纶巾,谈笑间,樯橹灰飞烟灭.故国神游,多 ...
- OOP第一阶段题集总结
一.前言 知识点:数组,字符串的使用,链表,hashmap,泛型的使用,正则表达式的使用,类的设计,类与类之间的关系,单一职责. 题量:题目数量为5+4+3,数量适中,其中都是前几题较简单,最后一题较 ...
- INFINI Labs 产品更新 | Easysearch 支持 SQL 查询、Console 告警功能支持邮件等多渠道
INFINI Labs 产品又更新啦~.本次更新概要如下:Easysearch 新增 SQL 插件和JDBC 驱动,支持 SQL 查询,支持 SQL 常用函数等:Console 针对告警功能做了升级优 ...
- 解密Prompt系列31. LLM Agent之从经验中不断学习的智能体
Agent智能体的工作流可以简单分成两种:一种是固定的静态工作流,一种是智能体自主决策的动态工作流. 静态流程的Agent举几个例子,例如新闻热点追踪推送Agent,每日新论文摘要总结Agent,它们 ...
- 大模型高效微调-LoRA原理详解和训练过程深入分析
博客首发于我的知乎,详见:https://zhuanlan.zhihu.com/p/702629428 一.LoRA原理 LoRA(Low-Rank Adaptation of LLMs),即LLMs ...
- linux命令查看内存命令free -h whereis locate find查找命令
linux命令查看内存命令free -h whereis locate find查找命令 1.free -h root@hz-auto-eureka-test-03:/usr/local/tomca ...
- __int1024!
使用说明: 数据范围约为\(-2^{1024}\le N \le2^{1024}\),反映到十进制约为\(-10^{309}\le N \le10^{309}\),但不保证完全如此. 输入输出使用自带 ...
- [flask]统一API响应格式
前言 在设计API返回内容时,通常需要与前端约定好API返回响应体内容的格式.这样方便前端进行数据反序列化时相应的解析处理,也方便其它服务调用.不同公司有不同的响应内容规范要求,这里以常见的JSON响 ...
- Pycharm或cmd在Terminal中运行tensorboard、pip等python包
这个主要是添加python包的路径到环境变量里 因为装了anaconda,所以我们要找的是对应虚拟环境里的包路径,一般是放在anaconda安装路径下的anaconda3\envs\环境名\Scrip ...