ianho/xing-weapp-component

怎么下拉刷新没效果啊?

Opened this issue · 8 comments

如题,下拉刷新无效

ssyzh commented

请用手机测试,不要用开发工具。

demo在手机上测试了下拉刷新还是无效,上拉加载更多是没问题

同问

安卓上没有反应,苹果的可以

ssyzh commented

原因是scroll-view在iOS上有橡皮筋效果,scrollTop可以为负值,在安卓上没有橡皮筋效果,scrollTop最小为0。可做以下下修改,暂时用着,待 @ianho 想出更好的办法。

<!--components/xing/x-scroll-view/x-scroll-view.wxml-->
<scroll-view class="scroll-view {{pullDownStatus === 3 ? 'refresh' : ''}} {{pullDownStatus === 4 ? 'finish' : ''}}" scroll-y scroll-with-animation enable-back-to-top scroll-into-view='{{topview}}' bindscroll="_onScroll" bindtouchend="_onTouchEnd" bindscrolltolower="_onLoadmore">
  <view class='con'></view>
  <view id='topview' class='con'></view>
  <view class="pulldown">
    <block wx:if="{{pullDownStatus === 0 || pullDownStatus === 1}}">
      <text class="iconfont icon-pull-down" space="nbsp"></text><text> {{pullText}}</text>
    </block>
    <block wx:if="{{pullDownStatus === 2}}">
      <text class="iconfont icon-release-up" space="nbsp"></text><text> {{releaseText}}</text>
    </block>
    <block wx:if="{{pullDownStatus === 3}}">
      <text class="iconfont icon-loading loading" space="nbsp"></text><text> {{loadingText}}...</text>
    </block>
    <block wx:if="{{pullDownStatus === 4}}">
      <text class="iconfont icon-complete" space="nbsp"></text><text> {{finishText}}</text>
    </block>
  </view>
  <slot></slot>
  <view class="loadmore">
    <block wx:if="{{nomore}}">
      <text>{{nomoreText}}</text>
    </block>
    <block wx:else>
      <text class="iconfont icon-loading loading" space="nbsp"></text><text> {{loadmoreText}}</text>
    </block>
  </view>
</scroll-view>

增加

 ready: function () {
    this.setData({
      pullDownStatus: 0,
      topview: 'topview'
    })
  },

修改

_onScroll: function (e) {
      this.triggerEvent('scroll', e.detail);
      const status = this.data.pullDownStatus;
      if (status === 3 || status == 4) return;
      const height = this.properties.pullDownHeight;
      const scrollTop = e.detail.scrollTop;
      console.log(scrollTop)
      let targetStatus;
      if (scrollTop < 1) {
        targetStatus = 2;
      } else {
        targetStatus = 0;
      }
      // if (scrollTop < -1 * height) {
      //   targetStatus = 2;
      // } else if (scrollTop < 0) {
      //   targetStatus = 1;
      // } else {
      //   targetStatus = 0;
      // }
      if (status != targetStatus) {
        this.setData({
          pullDownStatus: targetStatus,
        })
      }
    },

@ssyzh 谢了,安卓不支持回弹确实麻烦

@ssyzh 没有很明白你指的解决方式,比如改动xml的哪一块,ready方法指的是什么

确实如此,但是scrollTop也不准,scrollTop的值,应该是松手后,但是会有惯性滑动,所以不太灵敏。