遇到的问题
当使用better-scroll
插件进行滚动时,滑动页面,页面却不滚动或刷新后滚动
解决方法
- 官方给出的:
BetterScroll 滚动原理是 content 元素的高度/宽度超过 wrapper 元素的高度/宽度。而且,如果你的 content 元素含有不固定尺寸的图片,你必须在图片加载完之后,调用 refresh() 方法来确保高度计算正确。还存在一种情况是页面存在表单元素,弹出键盘之后,将页面的视口高度压缩,导致 bs 不能正常工作,依然是调用 refresh() 方法 - 网上搜罗来的:
- 刷新一下就好了,因为数据渲染没有完成,scroll已经初始化完了,目前的解决方案是使用setTimeout函数延迟scroll的refresh。
- 由于不同设备、不同浏览器环境的底层实现逻辑不同,BetterScroll 内部计算是否监听 touch 还是 mouse 事件可能会有判断失误,因此你可以根据如下的选项配置来解决这类问题
this.scroll = new BScroll(this.$refs.wrapper,{
//移动端下不会监听鼠标移动事件
disableMouse: false,
// 监听touch事件 false表监听,true则不是
disableTouch: false
})
- 在请求数据时,调用refresh方法,重新计算BetterScroll。
下面是我仿照网上做的蘑菇街案例,运行时也出现了这种问题,我是利用refresh()
解决的
this.$refs.scroll.scroll.refresh();