小程序——下拉加载列表例子

本文通过实例讲解如何在钉钉小程序中实现下拉加载更多功能,同样适用于微信和其他小程序,通过替换官方API实现自定义操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我所使用的是钉钉的小程序 微信或者其他的小程序也能安装这个思路来替换官方提供的api就行
hrml

<view>
  <view class="myscroll-wrap">
    <view class="item" a:for="{{list}}">{{index+1}} 第{{pageIndex}}页</view>
    <view class="loading" a:if="{{loading}}">正在加载中...</view>
  </view>
</view>

js

 data: {
    list:[], // 列表数据
    pageIndex: 0, //页码
    pageNum: 10,  //每页多少条
    totalPage: 5, //总页数
    loading: false, // 加载动画
  },
    onLoad() {
    this.getdata();
  },
  onReachBottom() {
    // 页面被拉到底部
    console.log('页面被拉到底部: ');
    console.log(this.data.pageIndex);
    if(this.data.pageIndex > this.data.totalPage){
      console.log('加载完毕');
      this.setData({loading: false});
      return
    }
    this.getdata();
  },
  async getdata(pageIndex){
    if(this.data.isPullDownRefresh){
      this.setData({
        pageIndex: 1,
        list: []
      }) 
    }
    console.log('获取数据: ');
    console.log('this.data.pageIndex: ', this.data.pageIndex);
    this.setData({loading: true});
    let list = this.data.list;
    for(let i=1; i<11;i++){
      list.push(i);
    }
    setTimeout(() => {
      this.setData({
        list,
        pageIndex: (this.data.pageIndex)+1,
        loading: false,
        isPullDownRefresh: false
      })  
      my.stopPullDownRefresh()
    }, 3000);
  }
### 微信小程序实现下拉刷新和加载更多 #### 下拉刷新功能的实现 为了实现在页面顶部下拉时刷新页面内容的功能,开发者可以利用微信小程序提供的 `onPullDownRefresh` 方法来监听用户的下拉操作。一旦检测到用户执行了下拉动作,则触发该方法内部定义的操作逻辑。 在具体的应用场景中,可以通过清除并重新填充 `data{}` 中的数据来模拟数据更新的过程[^3]: ```javascript Page({ data: { good_list: [] }, onPullDownRefresh() { console.log('正在执行下拉刷新...'); // 清空原有商品列表,并设置新的初始数据 this.setData({ good_list: [1, 2, 3] }); // 当新数据显示完成后停止下拉动画 if (this.data.good_list.length === 3) { wx.stopPullDownRefresh(); } } }); ``` 值得注意的是,在完成数据重置之后应当调用 `wx.stopPullDownRefresh()` 函数以关闭默认开启的状态栏上的“加载中...”提示框[^4]。 #### 上拉加载更多的实现 对于上拉加载更多的情况,主要通过监听页面滚动到底部的行为来进行处理。这同样依赖于微信小程序内置的一个生命周期函数——`onReachBottom` 。每当用户滚动至页面最下方时就会激活此回调函数,从而允许程序在此基础上追加额外的内容展示给用户[^1]。 下面是一个简单的例子展示了如何向现有项目里加入这一特性: ```javascript Page({ onLoad(options){ // 初始化时获取第一批数据... }, onReachBottom(){ console.log('已经到达底部'); // 假设这里是从服务器请求一批新的条目 const newData = [...this.data.good_list]; for(let i=0; i<5;i++){ newData.push(newData.length + 1); } // 更新视图状态 this.setData({ good_list:newData, }) } }) ``` 此外,为了让页面支持这两种交互方式,还需要确保在对应的 JSON 配置文件内启用了相应的选项: ```json { "enablePullDownRefresh": true } ``` 这样做的目的是让当前页面能够响应来自用户的上下拉动手势输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值