小程序下拉刷新数据未加载

319 阅读1分钟

普通的下拉刷新很简单,在onPullDownRefresh事件里面操作即可,

但目前遇到的问题是从别的页面跳转换回来,下拉刷新之后数据没有正确的回显,经过真机调试发现了问题,是翻页没传对导致的;;;;;;

普通的翻页操作:::

onPullDownRefresh() {
    this.setData({
      current:this.data.current + 1,
    })
    this.getList()
  },

跳转别的页面再跳转回来,如果还是按照上述操作的话拿确实数据不会正常显示,,,,,,,

我的处理方式是定一个全局变量来做标记位 util.globalData.isFresh=false

因为我的全局变量是放在util里面的

我们一步步来操作一下,先跳转别的页面:

wx.navigateTo({
    url:url
})

//这里把默认的isFresh置为true
util.globalData.isFresh=true

返回当前页面,onPullDownRefresh的处理方式:

 onPullDownRefresh:function() {
    wx.startPullDownRefresh()
    let that = this
    wx.showNavigationBarLoading()
    wx.showLoading({
      title: '加载中'
    })
    
    // 当前页码
    let cur = that.data.current
    
    //加载数据的list
    let list = that.data.list
    
    //全局标记,因为小程序的返回没有刷新当前页面,也能跟我的跳转方式有关,,,大家可以尝试别的跳转方式
    const fresh = util.globalData.isFresh

    if(fresh===true){
      // 此处说明是从别的页面返回的,那就把页码变成1
      cur=1
      
      // 把list置空,,否则会把之前的数据也显示了,就造成数据不准确
      list=[]
      
      // 这里也很重要哦!!!!改为false,立马变成正常的翻页即可,,,,
      util.globalData.isFresh = false
    }else{
       //反之就是正常的刷新
      cur = that.data.current + 1
      list = that.data.list
    }

    setTimeout(() =>{
      wx.hideNavigationBarLoading()
      wx.hideLoading()
      that.setData({
        current:cur,
        list: list,
      })
      wx.stopPullDownRefresh()
      that.getList()
    },1500
    
   }

加载数据列表的函数:

  getList: function () {
    wx.request({
      url: util.globalData.interfaceUrl + '/list',
      data: {
        current: that.data.current,
        size: that.data.size,
      },
      success(res) {
        if(res.data.code === 0){
          if(res.data.data.records.length > 0){
            // 最重要的是这个赋值哦~~~~~~~
            that.setData({
              list: that.data.list.concat(res.data.data.records)
            })
          }
        }else{
          wx.showToast({
            title: res.data.msg,
          })
        }
        
      }
    })
  },