小程序下拉刷新加载更多进入下一页再返回问题

遇到的问题
1.本来在onload执行加载数据,但是因为要在这个页面跳转到下一个页面修改数据,再返回到这个页面,所以就把初始化数据写到onshow中,只要进入页面就触发请求初始化数据。
2.但是当在a页面加载更多的是时候进入b页面再返回到a页面,此时页面触发了加载更多函数,而且页面页面位置不在顶部,为了解决这个问题,我粗鲁的让页面在onshow里面直接执行回到顶部函数。
3.
a:加载更多函数时候把hasmore锁死了即当加载完毕时候把hasmore设置成false,导致跳到下一个页面再返回来时候hasmore还是false,则无法进行加载更多函数
b:加载到最后一页的时候pageNo变成了最大值,这时候跳转到下一个页面又返回到这个页面时候pageNo仍是最大值,导致无法进行加载更多函数。

解决:
1.初始化第一个页面时候即onshow函数中设置hasmore为true,设置pageNo为1,即防止hasmore锁死和pageNo值改变的问题,
2.上拉刷新,即onPullDownRefresh时,同时设置pageNo为1,hasmore为true,防止加载到最底部时候hasmore为false时候锁死,则上拉刷新后请求第一页的数据但是却没法加载更多的情况。

onshow函数里面调用直接上拉刷新函数,当数据改变进来时候直接可以看,

下拉刷新函数

onPullDownRefresh: function() {
    wx.showNavigationBarLoading()
    this.data.pageNo = 1;
    this.data.hasMore = true;
    this.data.loading = false;
    this.setData({
      noresult:false
    })
    let hz = app.globalData.userData.hydm;
    // let hz=this.data.hz
    let pageSize = this.data.pageSize;
    let pageNo=1;
    fabuModel.getFabu(hz, pageSize, 1).then(res => {
        if (res.error_code = "0") {
          this.setData({
            listData: res.data,
          })
          if (pageNo * pageSize < res.totalRecords) {
            // 还有 数据
            this.setData({
              hasMore: true,
            })
          } else {
            this.setData({
              hasMore: false
            })
          }
          wx.hideNavigationBarLoading();
          wx.stopPullDownRefresh();
        } else {
          wx.showToast({
            title: res.error_message,
            icon: "none"
          })
        }

    })
  },

上拉加载更多函数

 onReachBottom: function() {
    if (!this.data.hasMore) {
      return;
    }
    let hz = app.globalData.userData.hydm;
    this.data.pageNo++
      let pageSize = this.data.pageSize;
    let pageNo = this.data.pageNo;
    // 解决拉的快一次发送多个请求
    // 表示正在发送请求
    if (this.data.loading) {
      return
    }
    if (this.data.hasMore) {
      fabuModel.getFabu(hz, pageSize, pageNo).then(res => {
        // 请求之前为true,锁住,不会重复请求
        this.data.loading = true;
        if (res.error_code = "0") {
          if (pageNo * pageSize < res.totalRecords) {
            // 还有 数据
            this.setData({
              hasMore: true,
            })
          } else {
            this.setData({
              hasMore: false,
              noresult: true
            })
          }
          // paginationBev.setMoreData(res.data)
          const tempArray = this.data.listData.concat(res.data);
          this.setData({
            listData: tempArray
          })
          this.data.loading = false;
        } else {
          wx.showToast({
            title: res.error_message,
            icon: "none"
          })
          this.data.loading = false;
        }
      }).catch(err => {
        this.loading = false
      })
    }

  },

onshow中直接调用回到顶部函数


  //返回顶部
  backToTop: function() {
    wx.pageScrollTo({
      scrollTop: 0,
      duration: 400
    });
  
  },

以上就是暂时遇到的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值