swiper配合scroll-view下拉刷新和上拉加载不能共存问题
发布于 5 年前 作者 yong02 9236 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

页面无法触发[onReachBottom()] 或者 scroll-view的[bindscrolltolower]

当前的页面结构使用了swiper和scroll-view组件,结构如下:

<topbar><topbar>

<swiper>

_    <swiper-item>
_

_        <scroll-view bindscrolltolower=尝试绑定触底监听>
_

_            可下拉刷新,上拉加载的内容区域
_

_        </scroll-view>
_

   </swiper-item>


_    <swiper-item>
_

_        <scroll-view>
_

_            可下拉刷新,上拉加载的内容区域
_

_        </scroll-view>
_

   </swiper-item>

_    …
_

</swiper>


<footernavbar><footernavbar>

  • 预期表现

页面三段式布局,顶部、底部fixed固定;

中间填充满屏幕,内容区域swiper切换,且超过高度触发下拉刷新,上拉加载;

为了更好体验保留自带的下拉刷新,也能正常触发。

  • 复现路径

默认状态:

下拉状态:(能够正常触发下拉刷新)

上拉加载状态:(无法触发默认的onReachBottom,也无法触发scroll-view的bindscrolltolower)

  • 提供一个最简复现 Demo

提供了代码片段,可上拉复现

4 回复

那上拉加载呢 我这边 因为中间固定了100% 导致 onReachBottom不执行了,你这个可以执行吗

解决办法:

swipe中内容

//wxml
<view
    bind:touchmove=“TTouchmove”
    class=“jscroll-view-pull-component”>

    列表内容区域

    <!–
    scroll[watcher]
    -->
    <view id=“watcher-pullup”></view>

</view>

//js
/**
 * ------------------------------------------------------------------
 * @monitor
 * TTouchmove
 *
 * 组件滑动监听
 * ------------------------------------------------------------------
 */
TTouchmove: function(e) {
  let _this = this;
  let gap = _this.data.GAPBOTTOM;

  /**
   * ------------------------------------------------------------------
   * 监听loader
   * _ReachBottom
   * ------------------------------------------------------------------
   */
  // system infos
  let sys = _this.data.systemInfo;
  let windowHeight = sys.windowHeight;

  // query ob
  let query = wx.createSelectorQuery().in(_this);
  let nodeId = ‘#watcher-pullup’;

  query.select(nodeId).boundingClientRect()
  query.exec(function(res){
    if (res[0].top <= windowHeight + gap) {

      // load data
      _this._loadData();
    }
  });

},

你好请问怎解决的

回到顶部