发布于 5年前

微信小程序上拉加载重复请求

showList.js

requestFlag: false,
handleLower: function (event) {
    console.log("now page" + this.data.pageindex);
    var that = this;
    if (!this.requestFlag) {
        this.requestFlag = true;
        that.setData({ loading: true, loadingComplete: false });
        wx.showNavigationBarLoading();
        that.getStarData();
    }
}

<br /> showList.wxml

<import src="/pages/template/list-template.wxml" />

<view class="container">
  <view class="show-content" wx:if="{{haveStars}}">
    <scroll-view class="scroll-stars" style="height:{{windowHeight}}rpx" upper-threshold="0" lower-threshold="0" scroll-y="true" bindscrolltolower="handleLower" bindscrolltoupper="handleUpper">
      <block wx:for="{{stars}}">
          <template is="projectSimpleInfo" data="{{...item}}"></template>
      </block>
      <view class="loading" hidden="{{!loading}}">载入中...</view>
      <view class="complete" hidden="{{!loadingComplete}}">已加载全部</view> 
    </scroll-view>
  </view>
  <view wx:else>
    <view class="errorMsg" wx:if="{{message}}">{{message}}</view>
    <text>no data</text>
  </view>
</view>

<br /> 定义一个文件内的 flag 变量默认为 false, 执行上拉加载时将其设为 true,阻止请求阶段再次执行上拉加载造成多次请求,当wx.request()开始执行回调函数时再将其置为 false。

  1. 将其设置在 data 中是否有用未知。
  2. 重复请求的原因未知,在 macOS 中的开发者工具 ( Version 0.15.152800 ( 0.15.152800 )) 调试正常,实机测试 ( iphone6p WeChat 6.5.6 ) 时才会造成重复请求。
©2020 edoou.com   京ICP备16001874号-3