当前位置:   article > 正文

微信小程序开发之scroll-view上拉加载数据实现_微信小程序开发 scroll-view 上拉

微信小程序开发 scroll-view 上拉

一、开发思路

1、使用小程序的scroll-view组件中提供了一个bindscrolltolower属性监听组件的滑动到了底部

https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html可以点击链接查看scroll-view组件拥有的属性

2、组件滑动到底部这个事件会频繁触发、所以为了防止多次触发我们定义一个状态用于管理加载的状态、如果上拉数据状态在加载中就不去做网络请求加载数据

3、上拉的时候对page进行加1然后获取网络请求

4、数据获取成功对获取的数据进行叠加

二、实现代码

1、布局

布局中我使用了scroll-view并且使用了bindscrolltolower这个属性绑定了我的lowe函数

  1. <scroll-view scroll-y="true" scroll-y="{{isScroll}}" enable-back-to-top='true' bindscrolltolower='lower' style='overflow: scroll;-webkit-overflow-scrolling:touch;margin-top:130px;'>
  2. <block wx:key="index" wx:for="{{dataShow}}">
  3. <view data-index='{{index}}' class="order-item">
  4. <view class="contentBody">
  5. <view class='title'>
  6. {{item.company}}
  7. </view>
  8. <view class='time'>
  9. {{item.time}}
  10. </view>
  11. <view class='title'>
  12. <text>{{item.university}}</text>
  13. <text style='margin-left:32px'>{{item.place}}</text>
  14. </view>
  15. <view style='margin-top: 8px'>
  16. <text class='origin'>来源</text>
  17. <text class='originInfo'>{{item.university}}/就业网</text>
  18. </view>
  19. </view>
  20. </view>
  21. </block>
  22. <view wx:if='{{noData}}'class="noData">没有更多了~</view>
  23. </scroll-view>

2、js中的实现

stopLoadMoreTiem是我在data中定义的变量默认是false

定义page和stopLoadMoreTiem

下面就是布局中组件中bindscrolltolower绑定的函数、 that.getList()就是网络请求方法

  1. //下拉加载
  2. lower: function() {
  3. var that = this;
  4. if (that.stopLoadMoreTiem) {
  5. return;
  6. }
  7. this.setData({
  8. page: this.data.page + 1 //上拉到底时将page+1后再调取列表接口
  9. });
  10. that.getList();
  11. },

网络请求方法中网络请求成功改变stopLoadMoreTiem的状态网络请求成功没有数据的时候我给nodata赋值了 ,nodata布局中负责显示没有更多数据 布局的显示

  1. /**
  2. * 请求网络获取列表数据
  3. */
  4. getList() {
  5. var that = this;
  6. that.stopLoadMoreTiem = true;
  7. // if (!that.stopLoadMoreTiem) {
  8. // }
  9. wx.showLoading({title:'数据读取中...'})
  10. wx.request({
  11. url: app.globalData.apiHost + '/page?page=' + that.data.page + '&size=10',
  12. method: 'GET',
  13. data: {
  14. queryStartDate: that.data.queryStartDate,
  15. queryEndDate: that.data.queryStartDate,
  16. },
  17. header: {
  18. 'Accept': 'application/json'
  19. },
  20. success: function(res) {
  21. wx.hideLoading();
  22. if (!res.data.content || res.data.content.length === 0) {
  23. that.setData({
  24. noData: true,
  25. })
  26. return;
  27. }
  28. if (that.stopLoadMoreTiem) {
  29. if (res.data.content && res.data.content.length > 0) {
  30. that.setData({
  31. dataShow: that.data.dataShow.concat(res.data.content),
  32. total: res.data.totalElements,
  33. })
  34. }
  35. } else {
  36. that.setData({
  37. dataShow: res.data.content,
  38. total: res.data.totalElements,
  39. })
  40. }
  41. that.stopLoadMoreTiem = false;
  42. }
  43. })
  44. },

下面这块代码是关键代码 这块我写的如果是上拉加载并且获取的数据长度大于0我在这里使用concat关联将数组叠加。

 dataShow: that.data.dataShow.concat(res.data.content),

  1. if (that.stopLoadMoreTiem) {
  2. if (res.data.content && res.data.content.length > 0) {
  3. that.setData({
  4. dataShow: that.data.dataShow.concat(res.data.content),
  5. total: res.data.totalElements,
  6. })
  7. }
  8. } else {
  9. that.setData({
  10. dataShow: res.data.content,
  11. total: res.data.totalElements,
  12. })
  13. }

以上就是上拉加载更多的数据有问题请留言下拉刷新也很简单使用bindscrolltoupper这个属性

送上一波福利

微信公众号开发、企业建站开发、小程序、vue、h5、css3、react等前端视频学习资料关注公众号【码兄】免费获取

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号