移动端项目,滚动的组件用better-scroll
因为数据量太大要用分页
横向滚动,所以要配scrollX为true这个属性,
但赔了这个属性,就不能用 pullingUp这个事件了,
所以我有用 scrollEnd这个事件,在当前位置+50大于等于maxScrollX时,请求新的数据
拿到新数据后,在调用refresh方法
每次那五条数据
代码如下
this.$nextTick(() => {
if (!this.scroll) {
this.scroll = new BScroll(this.$refs.wrapper, {
click: true,
scrollX: true
})
const maxScrollX = this.scroll.maxScrollX
this.scroll.on('scroll', (pos) => {
console.log(pos, 'scroll pos')
})
this.scroll.on('scrollEnd', (pos) => {
if (pos.x < maxScrollX + 50 && this.activityList.length < this.total){
this.$emit('loadMore', 'activity')
this.scroll.refresh()
}
})
}
})
初始化的滚动是没问题的
现在出现的问题是,连续横向移动在间隔时间很短的情况下,会出现新数据拿到了,可以在devtools看到新数据放入列表中了,但新的数据对应的dom不能移入到页面中,就像better-scroll没监听到有新数据一样
但如果我很缓慢的操作横向拖动,当拖动停稳后再操作第二下,新情求的数据和对应的dom就可以被移入页面