小程序

小程序-下拉刷新&&上拉加载

2018-01-26  本文已影响279人  beatzcs

小程序实现下拉刷新和上拉加载更多有两种方式:
1.通过小程序自带的页面相关事件处理函数 onPullDownRefreshonReachBottom 来实现;
2.通过 scroll-view 组件的 bindscrolltolowerbindscrolltoupper 实现。
个人比较推荐使用第一种,因为scroll-view组件的两个事件的触发会出现些许小问题,不是不能触发就是多次触发,要做特殊处理,不省心。

onPullDownRefresh + onReachBottom
  <block wx:for='{{tradeList}}'>
      <!-- 列表内容... -->
  </block>
  <!--  底部加载显示  -->
  <import src='/template/footer/footer.wxml' />
  <template is='hasMore' data='{{...foot}}'></template>
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      pageIndex: 1,
    });
    this.pullDownRefreshData(this);
  },

  /**
    * 页面上拉触底事件的处理函数
    */
  onReachBottom: function () {
    this.setData({
      pageIndex: this.data.pageIndex + 1,
    });
    this.pullUpRefreshData(this);
  },


  /**
   * 下拉刷新
   */
  pullDownRefreshData: function (context) {
    let params = {
      pageIndex: 1,
    };
    app.YoniClient.request(app.Func.GET_FAVORITE_LIST, params, function (res) {
      //console.log("下拉刷新: " + JSON.stringify(res));
      if (res.code == 0) {
        context.setData({
          tradeList: res.result.goodsList,
          foot: { loading: res.result.goodsList.length == 10, nomore: false },
        });
      }
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 上拉加载
   */
  pullUpRefreshData: function (context) {
    let params = {
      pageIndex: context.data.pageIndex,
    };
    app.YoniClient.request(app.Func.GET_FAVORITE_LIST, params, function (res) {
      //console.log("上拉加载: " + JSON.stringify(res));
      if (res.code == 0) {
        let tempList = context.data.tradeList;
        let collectList= tempList.concat(res.result.goodsList);
        context.setData({
          tradeList: collectList,
          foot: { loading: collectList.length == 10, nomore: collectList.length != 10 },
        });
      }
    }, true);
  },
scroll-view
<scroll-view class='scroll-view_V' scroll-y bindscrolltolower='pulluprefresh' bindscrolltoupper='pulldownrefresh'>
     <block wx:for='{{orders.detail}}' wx:for-item='items' wx:for-index='indexx'>
            <!-- 列表内容... -->
     </block>
     <!--  底部加载显示  -->
     <import src='../../template/footer/footer.wxml' />
     <template is='hasMore' data='{{...foot}}'></template>
</scroll-view>
  /**
   * 下拉刷新
   */
  pulldownrefresh: function () {
    if (!this.data.loadMore) {
      this.setData({
        refresh: true,
        foot: { loading: true, nomore: false },
      })
      wx.startPullDownRefresh({

      });
      this.loadOrderList(this.data.swipe_config.current);
    }
  },

  /**
   * 上拉加载
   */
  pulluprefresh: function () {
    if (!this.data.loadMore) {
      console.log('----pulluprefresh----');
      this.setData({
        loadMore: true,
        //foot: { loading: true, nomore: false },
      })
      this.loadOrderList(this.data.swipe_config.current, true);
    }
  },

实现效果:


refresh.gif

拍的不是很好,实际效果是比较棒的。

其实这两种也是可以搭配着使用,看项目需求了!

上一篇下一篇

猜你喜欢

热点阅读