vue-better-scroll实现移动端下拉加载组件
1.下载安装better-scroll
npm i -S better-scroll
1.1安装完成之后,打开pacaage.json文件查看,是否有(better-scroll)
"dependencies": { "axios": "^0.19.0", //已安装better-scroll "better-scroll": "^1.15.2", "core-js": "^2.6.5", "vue": "^2.6.10", "vue-router": "^3.0.3", "vuex": "^3.0.1" },
2.在components下创建组件Scrooller
<template>
<div class="wrapper" ref="wrapper">
<!-- 内容分发 -->
<slot></slot>
</div>
</template>
<script>
import BScroll from 'better-scroll';
export default {
name: 'Scroller',
// 父子通信
props : {
handleToScroll : {
type : Function,
// 默认一个空的方法 防止报错
default : function(){},
},
handleToTouchEnd : {
type:Function,
default: function(){}
}
},
mounted(){
//接收两个参数 1.找到最外层包裹的容器 dom元素 2.配置元素 true 开启配置
var scroll = new BScroll( this.$refs.wrapper,{
tap:true,
probeTybe: 1
});
scroll.on('scroll',(pos) => {
this.handleToScroll(pos);
});
scroll.on('touchEnd',(pos) => {
this.handleToTouchEnd(pos);
})
}
}
</script>
<style scoped>
.wrapper{
height: 100%;
}
</style>
2.1在main.js中全局注册Scroller
// scroller全局组件 import Scroller from '@/components/Scroller/Scroller.vue' Vue.component('Scroller',Scroller);
3.在views中引入Scroller组件
<template>
<div class="movie_body" ref="movie_body">
<!-- 父子间传递方法 -->
<Scroller :handleToScroll="handleToScroll" :handleToTouchEnd="handleToTouchEnd">
<ul>
<li class="pulldown">内容</li>
</ul>
</Scroller>
</div>
</template>
<script>
// import BScroll from 'better-scroll';
export default {
name: 'name',
data(){
return {
movieList : [],
//加载状态
pullDownMsg : ''
}
},
mounted(){
this.axios.get('接口').then((res) => {
//处理数据并赋值给movieList
})
},
methods:{
//调用组件中的方法
handleToScroll(pos){
//y轴下拉高度大于30时,改变pullDownMsg
if( pos.y > 30){
this.pullDownMsg = '正在加载...'
}
},
//调用组件中的方法
handleToTouchEnd(pos){
if(pos.y > 30){
// 发起ajax
this.axios.get(’接口').then((res) => {
var msg = res.data.msg;
if(msg === 'ok'){
this.pullDownMsg = '加载完成!';
//延迟一秒
setTimeout(() =>{
this.movieList = res.data.list;
this.pullDownMsg = ''
},1000)
}
})
}
}
}
}
</script>

浙公网安备 33010602011771号