群晖做网站服务器会卡吗,阿里云可以做电影网站吗,北京搬家公司排名前十名电话,小网站如何做密码找回目录
InfiniteScroll 无限滚动
基本用法
详细说明
v-infinite-scroll 指令
infinite-scroll-disabled 属性
infinite-scroll-distance 属性
总结 需求背景 #xff1a; 项目统计管理列表页面#xff0c;数据量过多时在 IE 浏览器上面会加载异常缓慢#xff0c;导致刚…目录
InfiniteScroll 无限滚动
基本用法
详细说明
v-infinite-scroll 指令
infinite-scroll-disabled 属性
infinite-scroll-distance 属性
总结 需求背景 项目统计管理列表页面数据量过多时在 IE 浏览器上面会加载异常缓慢导致刚进入时页面空白无数据用户体验感较差所以需要整改优化。 这里就需要 前后端 联调 调整 了 后端需将接口由原来的传给前端全部数据调整为“分页传输”也就是前端再多传给后端两个字段值currentPage1// 当前页数pageSize10// 一页显示的条数 当然这里我们是由后端写死了5一页固定传给前端 5 条数据所以前端此字段可以不传 前端懒加载也就是 需借助 ElementInfiniteScroll 无限滚动组件 来实现一个下拉至列表底部时向后端请求下一页的数据用于拼接至列表数组。 接下来就让我们来了解使用吧 可参考 组件的 禁用加载 示例 InfiniteScroll 无限滚动
滚动至底部时加载更多数据。 在前端开发中很多页面都需要实现无限滚动的效果即当页面滚动到底部时自动加载更多的数据。Element Infinitescroll 是一款方便易用的 Vue 组件可以帮助我们快速实现无限滚动功能。 基本用法
Element Infinitescroll 提供了一个 v-infinite-scroll 指令可以直接在需要无限滚动的元素上使用。
项目示例
src / views / statistics / index.vue
templatedivDefaultReportv-ifdataList.length 0:dataList.syncdataList:loadingloading:noMorenoMoregetDataListgetDataList//div
/templatescript
import DefaultReport from ./component/DefaultReport;
import { getStatisticsData } from api/listApi.js;export default {components: { DefaultReport },data() {return {loading: false, // 列表加载中...noMore: false, // 没有更多了dataList: [], // 页面数据setFormData: {surveyId: ,currentPage: 1, // 当前页数},};},computed: {rqObj() {return this.$route.query || {};},},created() {if (this.rqObj.id this.rqObj.id ! null) {this.setFormData.surveyId this.rqObj.id;this.getDataList(this.setFormData);}},methods: {async getDataList(data) {let res await getStatisticsData(data);const { code, result } res;if (code 0) {if (result.lists result.lists.length 0) {this.dataList this.dataList.concat(result.lists);}this.loading false;// 加载完成后需要将loading设置为false以便下次触发加载} else {// 没有更多数据了需停止继续加载this.loading false;this.noMore false;}},},
};
/scriptstyle langscss scoped/style
src / views / statistics / component / DefaultReport.vue
templatediv classinfinite-list-wrapper styleoverflow: autoulclasslistv-ifdataList.length 0v-infinite-scrollloadMoreinfinite-scroll-distance0infinite-scroll-disabledloadDisabled!-- :infinite-scroll-disabledloadDisabled --li v-fori in dataList classlist-item :keyi!-- 展示数据的内容 --{{ i }}/li/ulp v-ifloading加载中.../pp v-ifnoMore没有更多了/pp v-ifdataList.length 0抱歉暂无数据/p/div
/templatescript
export default {props: {dataList: {type: Array,default: () [],},loading: {// 标记数据是否正在加载中type: Boolean,default: false,},noMore: {// 是否继续加载type: Boolean,default: false,},},data() {return {// count: 10,// loading: false,setFormData: {surveyId: ,currentPage: 1, // 当前页数},};},computed: {// noMore() {// return this.count 20;// },loadDisabled() {// 是否禁用false停止加载return this.loading || this.noMore;},rqObj() {return this.$route.query || {};},},created() {if (this.rqObj.id this.rqObj.id ! null) {this.setFormData.surveyId this.rqObj.id;}},methods: {// 滚动加载方法在这里进行数据加载操作loadMore() {if (this.noMore) return;this.$emit(update:loading, true);this.setFormData.currentPage;if (this.$parent.getDataList) {this.$parent.getDataList(this.setFormData);} else {this.$emit(getDataList, this.setFormData);}// this.loading true;// setTimeout(() {// this.count 2;// this.loading false;// }, 2000);},},
};
/scriptstyle langscss scoped
.infinite-list-wrapper {.list {min-height: 800px;overflow-y: auto;}
}
/style 详细说明
v-infinite-scroll 指令 在要实现滚动加载的列表上上添加 v-infinite-scroll 并赋值相应的加载方法可实现滚动到底部时自动执行加载方法。 v-infinite-scroll 指令用于绑定一个滚动到底部时要触发的方法。 示例v-infinite-scrollloadMoreloadMore 是一个方法当页面滚动到底部时会自动调用该方法。 infinite-scroll-disabled 属性 infinite-scroll-disabled 属性用于动态控制是否禁用无限滚动。 示例infinite-scroll-disabledloadDisabledloadDisabled 是一个数据变量用于标记数据是否正在加载中。当变量值为 true 时禁用无限滚动。 infinite-scroll-distance 属性 infinite-scroll-distance 属性用于控制触发加载的距离。 示例infinite-scroll-distance00 表示距离底部还有 0 个像素时触发加载。 总结 通过 Element Infinitescroll 我们可以方便地实现页面的无限滚动效果。
只需要使用 v-infinite-scroll 指令绑定方法控制 infinite-scroll-disabled 属性
和 infinite-scroll-distance 属性我们就可以加载更多的数据提升用户体验。