vue的v-infinite-scroll上拉加载更多
1.安装v-infinite-scroll组件
npm i vue-infinite-scroll -S
2.在main.js引入
import infiniteScroll from 'vue-infinite-scroll'
Vue.use(infiniteScroll)
3.在页面中使用
1.参数含义
v-infinite-scroll=“loadMore” 加载需要执行的函数
infinite-scroll-disabled=“busy” 设置是否执行loadMore函数,false则执行,true则不执行
infinite-scroll-distance=“10” 这里10决定了页面滚动到离页尾多少像素的时候触发回调函数
infinite-scroll-immediate-check 默认值为true,该指令表示,应该在绑定后立即检查busy的值和是否滚动到底。假如你的初始内容高度不够,不足以填满可滚动的容器的话,你应设为true,这样会立即执行一次loadMore,会帮你填充一些初始内容。
infinite-scroll-listen-for-event 当事件在Vue实例中发出时,无限滚动将再次检查。
infinite-scroll-throttle-delay 检查busy的值的时间间隔,默认值是200,因为vue-infinite-scroll的基础原理是,vue-infinite-scroll会循环检查busy的值,以及是否滚动到底,只有当:busy为false且滚动到底,回调函数才会执行
2.html
//注意。高度那边得设置好,一定要限定高度(height:xxx; overflow-y:auto)load加载方法将在拉取底部时才会被执行。
<section
v-loading="loading"
v-infinite-scroll="videoMore"
infinite-scroll-throttle-delay="1000"
:infinite-scroll-disabled="busy"
infinite-scroll-distance="10"
style="height: calc(100vh - 350px); overflow: auto"
>
<div
class="MaterialLocalPane_MaterialContainerLoading_29mr-"
>
<div v-if="videoList.length !== 0" class="up-mod-body">
<div style="margin: 15px 0">{{v}}</div>
</div>
<div class="nodata" v-if="videoList.length === 0">
暂无数据~
</div>
</div>
</section>
2.js
data
data() {
return {
materpagr: {
page: 1, //当前页数
page_size: 10, //每页展示几个
},
busy: false, //是否执行loadMore函数
loading: true, //加载层
videoList: [], //数据列表
};
},
methods
methods: {
// 进入页面获取数据列表
init() {
this.materpagr.page = 1;
this.materiallocalf(1);
},
//一进来先获取第一页素材获取素材
materiallocalf(page) {
if (this.materpagr.page == 1 || page) {
this.loading = true;
//materiallocal是自己封装的接口,可根据自己的代码来改
materiallocal({
page: page,
page_size: this.materpagr.page_size,
}).then((response) => {
this.videoList = response.data.data.list;
this.materpagr.page = response.data.data.page;
this.materpagr.page_size = response.data.data.pageSize;
this.loading = false;
});
}else{
//当不等于第一页时执行上拉加载函数
this.videoMore()
}
},
//加载更多函数
videoMore(){
// 通过数据总数判断页数
if (
this.materpagr.page - 1 >
this.materpagr.cursor / this.materpagr.page_size
) {
return false;
} else {
this.materpagr.page ;
this.loading = true;
this.busy = true; //设置执行loadMore函数
materiallocal({
page: this.materpagr.page,
page_size: this.materpagr.page_size,
}).then((response) => {
let newData = response.data.data.list;
let oldData = this.videoList;
this.videoList = oldData.concat(newData); //此处注意是叠加进数组而不是替换
this.materpagr.cursor = response.data.data.count;
this.materpagr.page = response.data.data.page;
this.materpagr.page_size = response.data.data.pageSize;
this.loading = false;
this.busy = false; //数据请求成功后设置停止执行loadMore函数
});
}
},
},
以下就完成了v-infinite-scroll的使用过程
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghfkhh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13