vue怎样做下拉加载更多效果?一文带你看懂
Admin 2021-08-19 群英技术资讯 883 次浏览
怎样用vue做下拉加载更多效果?我们在很多文章或者咨询网站上,常常能看到下拉加载更多效果,这种效果能好的折叠空间,让网站排名更美观,因此很多站长会应用这个效果,那么用vue如何实现下拉加载更多效果呢?下面我们来具体看看。
(1). 安装插件
npm install --save el-table-infinite-scroll
(2). 全局引入并注册
// main.js import elTableInfiniteScroll from 'el-table-infinite-scroll'; Vue.use(elTableInfiniteScroll);
(3). 局部文件引入
<script> // 引入 import elTableInfiniteScroll from 'el-table-infinite-scroll'; export default { // 注册指令 directives: { 'el-table-infinite-scroll': elTableInfiniteScroll } } </script>
(4). 使用指令
<el-table :height="tableHeight" v-el-table-infinite-scroll="loadMore"> </el-table>
(5). 代码实例
<template> <div class="app-container"> <el-table :height="tableHeight" v-el-table-infinite-scroll="loadMore" :data="tableList"> <!-- 表格数据省略 --> </el-table> </div> </template> <script> // 引入插件 import elTableInfiniteScroll from "el-table-infinite-scroll"; export default { name: "index", data() { return { // 表格高度 tableHeight:"", // 数据总数 tableCount:0, // 表格数据列表 tableList:[], // 是否加载中 tableLoading:false, // 表格搜索条件 tableSearch:{ page:1 } } }, // 注册指令 directives: { "el-table-infinite-scroll": elTableInfiniteScroll, }, created() { let windowHeight =document.documentElement.clientHeight || document.body.clientHeight; // 动态计算表格的高度,200为屏幕内除了表格以外其他元素的高度,依实际情况而定 this.tableHeight = windowHeight - 200 + "px"; }, mounted(){ this.getTableData(this.tableSearch); }, methods: { // 请求表格数据 getTableData(search) { let page = search.page; let url = "index?page=" + page; // 首次打开页面要加载一次数据,为了防止数据过多自动触发滚动,此处需要置为加载中 this.tableLoading = true; this.$http.get(url).then((result) => { if (res.code == 10000) { // 拼接数据 this.tableList = this.tableList.concat(result.data.list); this.tableCount = result.count; this.tableSearch.page = result.current; this.tableLoading = false; } }); }, // 加载更多 loadMore() { if (!this.tableLoading) { this.tableLoading = true; if (this.tableList.length < this.tableCount) { this.tableSearch.page++; this.getTableData(this.tableSearch); } else { this.$message("已加载完所有的数据!"); this.tableLoading = false; } } }, } }; </script>
上面使用的插件需要依赖Element-UI,如果没有使用Element-UI,那就只能自己写一个下拉加载了,实现代码如下:
<template> <div class="app-container"> <div :style="{height:tableHeight,overflow:'auto'}" id="tableBox"> <!-- 表格数据省略 --> </div> </div> </template> <script> export default { name: "index", data() { return { // 表格高度 tableHeight:"", // 数据总数 tableCount:0, // 表格数据列表 tableList:[], // 是否加载中 tableLoading:false, // 表格搜索条件 tableSearch:{ page:1 } }; }, created(){ let windowHeight = document.documentElement.clientHeight || document.body.clientHeight; // 动态计算表格的高度,200为屏幕内除了表格以外其他元素的高度,依实际情况而定 this.tableHeight = windowHeight - 200 +'px'; }, mounted() { this.getTableData(this.tableSearch); document.getElementById("tableBox").addEventListener('scroll',this.onTableScroll); }, beforeDestroy() { // 移除监听事件 window.removeEventListener('scroll', this.onTableScroll) }, methods: { onTableScroll(){ var obj = document.getElementById("tableBox"); var scrollHeight = obj.scrollHeight; var scrollTop = obj.scrollTop; var objHeight = obj.offsetHeight; // 100为阈值,可根据实际情况调整 if(scrollHeight <= (scrollTop + objHeight + 100) && !this.tableLoading && this.tableList.length<this.tableCount){ this.tableLoading = true; this.tableSearch.page++; setTimeout(()=>{ this.getTableData(this.tableSearch); },300) } }, getTableData(search){ let page = search.page; let url = "index?page=" + page; // 首次打开页面要加载一次数据,为了防止数据过多自动触发滚动,此处需要置为加载中 this.tableLoading = true; this.$http.get(url).then((result) => { if (res.code == 10000) { // 拼接数据 this.tableList = this.tableList.concat(result.data.list); this.tableCount = result.count; this.tableSearch.page = result.current; this.tableLoading = false; } }); }, }, }; </script>
以上就是关于vue实现下拉加载更多效果的介绍,希望对大家学习vue框架有帮助,想要了解更多vue框架实现效果或者更多的下拉加载更多效果的实现方法,大家可以关注其他相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了JavaScript树结构深度优先算法,树结构可以说是前端中最常见的数据结构之一,比如说DOM树、级联选择、树形组件,更多相关内容需要的小伙伴可以参考一下
这篇文章我们来简单的了解一下vue3中watcheffect的用途与使用,首先watch和watchEffect都是监听器,但是watch和watchEffect在写法和使用上都有一定的区别,因为为了便于大家理解,下面小编就给大家来讲讲。
这篇文章主要介绍了vue如何使用rem适配,帮助大家处理vue开发移动应用时的兼容性问题,感兴趣的朋友可以了解下
这篇文章给大家分享的是怎样使用vue做一个价格日历效果的代码。在日历上能一目了然的看到每人的费用价格记录是多少,小编觉得挺有趣的,因此分享给大家做个参考,感兴趣的朋友就接着看吧。
这篇文章主要介绍了Vue.$set 失效的坑 问题发现及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008