在移动端开发中经常会运用到上拉加载更多来实现分页的操作,不仅可以增加用户良好的体验,也可以让自己的项目看起来更加的丝滑~
那么具体要怎么做呢?
准备一个容器来设置滚动事件
如果要设置固定高度容器则设置ref
<template>
<div class="container" ref="scroll">
<!-- 滚动内容代码 -->
</div>
</template>
写一个滚动事件方法
onScroll(){
//可滚动容器的高度
let innerHeight = this.$el.clientHeight;
//屏幕尺寸高度
let outerHeight = document.documentElement.clientHeight;
//可滚动容器超出当前窗口显示范围的高度
let scrollTop = document.documentElement.scrollTop;
//避免切换时读取到异常高度
if(scrollTop==0){
innerHeight=10000
}
//scrollTop在页面为滚动时为0,开始滚动后,慢慢增加,滚动到页面底部时,出现innerHeight < (outerHeight + scrollTop)的情况,严格来讲,是接近底部。
console.log(innerHeight + " " + outerHeight + " " + scrollTop);
if(this.isLoad){
console.log(1)
if(innerHeight <= outerHeight + scrollTop){
//此处添加自定义操作
}
}
},
如果设置了ref则将 $el换成$refs.scroll即可
设置滚动事件开关
data () {
return {
isLoad:true,
msg:"正在加载"
};
},
在生命周期函数 添加滚动事件和移除滚动事件
mounted(){
//开启滚动事件
window.addEventListener("scroll", this.onScroll);
},
destroyed(){
//关闭滚动事件
window.removeEventListener("scroll",( this.onScroll));
}
值得一提的是如果该页面用了keepalive则会没有destroyed生命周期
则用新增的两个生命周期来添加和移除滚动事件
activated(){
//开启滚动事件
window.addEventListener("scroll", this.onScroll);
},
deactivated(){
//关闭滚动事件
window.removeEventListener("scroll",( this.onScroll));
},
以上就是分享的vue上拉加载更多操作,其实现在有很多已经开发好的插件可以使用,原理都是差不多监听窗口的高度来进行操作,平时开发时多加运用就好啦~