通过配置文件实现下拉刷新是微信小程序做的比较好用的一个点,让我们不必再像 Android App 那样引入其他的库或是自定义组件来实现。
但是,当小程序的下拉刷新碰上 scroll-view 的时候,就会发现,在 scroll-view 区域进行滑动,即使页面已经到达顶部了,下拉刷新方法也不会触发,而 scroll-view 的区域往往会占据页面的大部分空间,这部分区域如果如法实现下拉,对小程序页面的体验还是有很大影响的。
于是研究了一下,发现了一个比较好的解决方法,在这里分享给大家,如果有什么不足之处,也请大家留言指正。
原理,scroll-view 在没有达到顶部的时候,不会触发 bindtouchmove 事件, 而一旦触发了这个事件, scroll-view 一定是达到了顶部或者是底部,所以,在 bindtouchmove 第一次触发的时候记录下此时的 clientY, 最后当 bindtouchend 触发的时候,比较一下此时的 clientY 和记录值得差,判断是否进行下拉刷新。
touchEnd(e) {
let clientY = e.changedTouches[0].clientY;
if (this.data.offsetTop != -1) {
let offset = clientY - this.data.offsetTop;
if (offset > 100) {
wx.startPullDownRefresh();
}
}
this.data.offsetTop = -1;
},
touchMove (e) {
let clientY = e.changedTouches[0].clientY;
if (this.data.offsetTop == -1) {
this.data.offsetTop = clientY;
}
}
这个么:
https://github.com/Chaunjie/weapp-scroll-view-refresh