• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

微信小程序实现懒加载追加数据方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

业务中我们常会遇到图片较多、或者数据较多的列表,一次渲染出来的话轻则渲染时间过长,重则可能直接罢工白屏,什么都渲染不出来,这个时候懒加载(只渲染视口中的数据)就很有必要了,然后每次再追加一定的条数。

思路:

进入页面初始化,首先 voteList 数组加载前10条(数量根据实际需要),然后每当用户下拉到底部后,触发onReachBottom函数,追加后10条到 voteList 数组中,循环直到全部加载完毕,显示“全部加载完毕”等提示语,此时无法下拉。

代码:

wxml:

<view class="vote_list flex-row">
    <view class="item" wx:for="{{voteList}}" wx:key="{{item.contentId}}">
      <view class="image" bindtap="popupVideo" data-item="{{item}}" >
        <image class="img" mode="widthFix" src="{{item.contentpic50}}"></image>
        <image class="play_icon" src="../../images/video-icon.png"></image>
      </view>
      <view class="title" bindtap="popupVideo" data-item="{{item}}"><text>{{item.contentname}}</text></view>
      <view class="author">{{item.authorName}}</view>
    </view>
  </view>

js:

var api = require(\'../../api.js\');
var MD5 = require(\'../../utils/MD5.js\');
var app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    Phone: \'\',
    token: \'\',
    voteList: [],
    allList: [],
    currentNo: 10
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var Phone = wx.getStorageSync(\'Phone\')
    this.setData({
      Phone: Phone
    })
    this.getList()
  },

  // 列表
  getList() {
    var that = this
    wx.request({
      url: api.wx.getVoteList
      method: \'get\',
      data: app.getNewMD5({
        t: that.data.token
      }),
      success: function (res) {
        // console.log(res.data.data.content)
        if (res.data.code == \'200\') {
          var totalList = res.data.data.content
          var initList = []
          for (var i = 0; i < 10; i++) {
            initList.push(totalList[i])
          }
          that.setData({
            voteList: initList,
            allList: res.data.data.content
          })
          console.log(that.data.voteList)
        }
      }
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    var allList = this.data.allList
    var currentNo = this.data.currentNo
    var initList = []
    console.log(currentNo, allList.length)
    // 剩余条数
    var surplus = allList.length - currentNo
    if (surplus >= 10) {
      for (var i = 0; i < currentNo + 10; i++) {
        initList.push(allList[i])
      }
      console.log(\'initList\', initList)
      this.setData({
        currentNo: currentNo + 10,
        voteList: initList
      })
    } else {
      for (var i = 0; i < currentNo + surplus; i++) {
        initList.push(allList[i])
      }
      console.log(\'initList\', initList)
      this.setData({
        currentNo: currentNo + surplus,
        voteList: initList
      })
    }
  }

})

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap