问题:vue项目使用了better-scroll插件后,向下拉时会出现空白
原因:在页面渲染数据之前加载了插件,应该等dom加载完毕后再去执行better-scroll
解决:把插件写到数据请求之后,并且加上this.$nextTick(),nextTick会在dom加载完之后再去执行内部代码
正确写法:
methods:{
async getData(){
let res = await axios({
url:'/api/index_list/0/data/1'
})
this.items = Object.freeze(res.data.data.topBar);
this.newData = Object.freeze(res.data.data.data);
this.$nextTick(()=>{
// 滚动插件
this.oBetterScroll = new BetterScroll('.wrapper', {
movable: true,
zoom: true,
click:true
})
})
},
}
错误写法
mounted(){
// 滚动插件
this.oBetterScroll = new BetterScroll('.wrapper', {
movable: true,
zoom: true,
click:true
})
},
methods:{
async getData(){
let res = await axios({
url:'/api/index_list/0/data/1'
})
this.items = Object.freeze(res.data.data.topBar);
this.newData = Object.freeze(res.data.data.data);
}
},