位置: IT常识 - 正文

Element UI - v-infinite-scroll无限滚动组件

编辑:rootadmin
Element UI - v-infinite-scroll无限滚动组件

推荐整理分享Element UI - v-infinite-scroll无限滚动组件,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Element UI - v-infinite-scroll无限滚动组件

一、v-infinite-scroll无限滚动组件使用详解

1、v-infinite-scroll="load" //load无限滚动加载的方法 2、infinite-scroll-disabled //是否禁用无限滚动加载 3、infinite-scroll-delay //节流时延,单位为ms 4、infinite-scroll-distance //触发加载的距离阈值,单位为px 5、infinite-scroll-immediate //是否立即执行加载方法,以防初始状态下内容无法撑满容器。 //默认情况下,infinite-scroll-disabled是false,因此如果组件使用无限滚动加载组件,即使在vue不进行加载方法的调用,组件也会调用该方法,因此如果需要控制的话,尽量是使用infinite-scroll-disabled属性来进行加载方法是否调用的控制。

二、组件无限加载原因及解决方式 1、问题:使用无限加载的div没有设置高度导致无限加载 解决方案: <div v-infinite-scroll="load" :infinite-scroll-disabled="isInfiniteScrollDisabled" style="margin-bottom: 20px;height:640px;overflow-y:auto" //style的设置非常关键,一定要设置height高度 > 在指令使用的div一定要限定高度(height:xxx; overflow-y:auto)load加载方法将在拉取底部时才会被执行。 2、问题:为什么在vue中并没有在任何生命周期中进行load方法的调用,直接就加载了方法? 解决方案:使用 :infinite-scroll-disabled="isInfiniteScrollDisabled“属性来进行控制。 3、代码demo演示

<template> <div class="vue-class-name"> <div v-infinite-scroll="load" :infinite-scroll-disabled="isInfiniteScrollDisabled" style="margin-bottom: 20px;height:640px;overflow-y:auto" > <div v-for="item in dataList" :key="item.index" style="display: inline-block;margin:0px 10px 10px 0px" > <span>{{item}}</span> </div> <el-empty description="No Data" v-if="dataList.length == 0" style="height:650px;overflow-y:auto;text-align:center" ></el-empty> <!-- 这个div一定要放在使用指令的div里面--> <div align="center" v-if="dataList.length > 0"> <div class="drawer-footer"> <span v-if="pullStatus === $enum.STATUS.START"> Pull up to load more </span> <span v-if="pullStatus === $enum.STATUS.LOADING"> loading <i class="el-icon-loading"></i> </span> <span v-if="pullStatus === $enum.STATUS.NODATA"> no more data </span> </div> </div> </div> </div></template><script>export default { name: 'VueName', mixins: [], components: {}, props: {}, data: function() { return { pullStatus: this.$enum.STATUS.START, pageIndex: 1, pageSize: 20, dataList: [], isInfiniteScrollDisabled: false, }; }, computed: {}, watch: { //事件监听:当刷新浏览器页面或者切换项目的时候进行方法调用 projectSpaceId: function(value, oldValue) { this.dataList = []; this.pageIndex = 1; this.pullStatus = this.$enum.STATUS.START; this.getLoadMoreData(); }, }, created() {}, mounted() { //一进入页面进行方法调用 this.getLoadMoreData(); }, methods: { getLoadMoreData() { if (this.pullStatus != this.$enum.STATUS.START) { return; } this.pullStatus = this.$enum.STATUS.LOADING; this.isInfiniteScrollDisabled = true; let params = {};//请求参数,可省略 this.getData(params).then(resp => { if (data.length < this.pageSize ) { this.pullStatus = this.$enum.STATUS.NODATA; } else { this.pageIndex++; this.pullStatus = this.$enum.STATUS.START; } if (resp.data.length > 0) { this.dataList = this.dataList.concat(resp.data);//数组拼接,得到拼接后的数据 } this.isInfiniteScrollDisabled = false; }); }, }, beforeDestroy() { this.dataList = []; //清空数组};</script><style scoped></style>//常量定义export const STATUS= { START: 0, // 上拉加载 LOADING: 1, // 加载中 NODATA: 2, // 没有更多数据};

三、总结 当然,这个组件还有很多可以优化的地方,比如:可以将下面这一段代码抽成公共组件,使用该组件的地方,只需要传当前的pullStatus状态即可。

<div class="drawer-footer"> <span v-if="pullStatus === $enum.STATUS.START"> Pull up to load more </span> <span v-if="pullStatus === $enum.STATUS.LOADING"> loading <i class="el-icon-loading"></i> </span> <span v-if="pullStatus === $enum.STATUS.NODATA"> no more data </span> </div>

同时,也可以封装成一个mixins,这样同一个项目,如果多处需要滚动分页,那么这样代码就会更加简洁和方便,下面我粘贴一下mixins里面的代码:

/** * 页面无限滚动加载*/export default { name: "infiniteScrollMixins", data() { return { pullStatus: this.$enum.STATUS.START, pageIndex: 1, pageSize: 20, } }, computed: {}, created() {}, methods: { loadMoreData() { if (this.pullStatus != this.$enum.STATUS.START) { return; } this.pullStatus = this.$enum.STATUS.LOADING; if(this.getLoadMoreData) { //使用该mixins的组件需要定义该方法 this.getLoadMoreData(); } }, setPullStatus(data = []) { if (data.length < this.pageSize ) { this.pullStatus = this.$enum.STATUS.NODATA; } else { this.pageIndex++; this.pullStatus = this.$enum.STATUS.START; } } }, beforeDestroy() {},};

如何使用封装的mixins? 1、导入: import 名称 from ‘路径’; 2、

本文链接地址:https://www.jiuchutong.com/zhishi/297508.html 转载请保留说明!

上一篇:【小程序从0到1】宿主环境|WXML|WXSS|JS逻辑交互(微信小程序从零)

下一篇:【已解决】ERROR:The testing results of the whole dataset is empty(error出错)

  • jbl耳机怎么连接蓝牙(JBL耳机怎么连接APP)

    jbl耳机怎么连接蓝牙(JBL耳机怎么连接APP)

  • 腾讯会议最多可以多少人同时开视频(腾讯会议最多可以多少人参加)

    腾讯会议最多可以多少人同时开视频(腾讯会议最多可以多少人参加)

  • 微信可以分享屏幕吗(微信分享屏幕功能在哪里)

    微信可以分享屏幕吗(微信分享屏幕功能在哪里)

  • 微信步数怎么开启(微信步数怎么开启权限设置)

    微信步数怎么开启(微信步数怎么开启权限设置)

  • 小米cc9pro256g什么时候出(小米cc9pro参数是5g)

    小米cc9pro256g什么时候出(小米cc9pro参数是5g)

  • 华为手机进水屏幕闪烁(华为手机进水屏幕失灵)

    华为手机进水屏幕闪烁(华为手机进水屏幕失灵)

  • 路由器底部哪个是密码(路由器底部哪个是wifi密码)

    路由器底部哪个是密码(路由器底部哪个是wifi密码)

  • 手机清除数据后果严重(手机清除数据后照片还在吗)

    手机清除数据后果严重(手机清除数据后照片还在吗)

  • 加硬盘直接插上就可以了吗(加了硬盘之后电脑无法开机)

    加硬盘直接插上就可以了吗(加了硬盘之后电脑无法开机)

  • 支付宝怎么手机号查快递(支付宝怎么手机号查询快递)

    支付宝怎么手机号查快递(支付宝怎么手机号查询快递)

  • TP-LINK验证码验证失败怎么回事(tplink安全码获取验证码)

    TP-LINK验证码验证失败怎么回事(tplink安全码获取验证码)

  • 第三代计算机语言是指(第三代计算机语言采用什么语言)

    第三代计算机语言是指(第三代计算机语言采用什么语言)

  • 手机上的自动同步是什么意思(手机的自动同步功能有必要开启吗)

    手机上的自动同步是什么意思(手机的自动同步功能有必要开启吗)

  • 怎么把几个瞬间拍成视频(怎么把多个片段弄成一个视频)

    怎么把几个瞬间拍成视频(怎么把多个片段弄成一个视频)

  • 屏幕上的时间没了怎么弄出来(屏幕上的时间没有了怎么办)

    屏幕上的时间没了怎么弄出来(屏幕上的时间没有了怎么办)

  • m和mb流量哪个大(m和mb流量哪个大些)

    m和mb流量哪个大(m和mb流量哪个大些)

  • 苹果xr摄像头掉漆怎么办(苹果xr摄像头掉了)

    苹果xr摄像头掉漆怎么办(苹果xr摄像头掉了)

  • iPhone Xs Max的运行内存(iPhone XS Max的运行内存)

    iPhone Xs Max的运行内存(iPhone XS Max的运行内存)

  • beatsx怎么放进收纳盒

    beatsx怎么放进收纳盒

  • 华为b5各个版本区别(华为b5是什么时间上市的)

    华为b5各个版本区别(华为b5是什么时间上市的)

  • iphonexr三维触控在哪(iphonexr三维触控在哪里设置)

    iphonexr三维触控在哪(iphonexr三维触控在哪里设置)

  • 微信收款码名字怎么更改(微信收款码名字大全)

    微信收款码名字怎么更改(微信收款码名字大全)

  • 滴滴连接推送失败(滴滴车主打开后连接不到网络)

    滴滴连接推送失败(滴滴车主打开后连接不到网络)

  • 农业企业免哪些税款
  • 小额零星开支税前扣除
  • 可供出售金融资产公允价值变动
  • 增值税纳税申报表模板
  • 小规模收的专票怎么做账
  • 自建办公楼销售要交土地增值税吗
  • 企业捐赠不动产 会计分录
  • 结存材料物资会计分录怎么做?
  • 账户未认证
  • 厂房出租税收分类
  • 保洁劳务税点
  • 处置固定资产增值税税率
  • 补记去年收入分录
  • 金税盘开票出现离线发票金额超出限制怎么设置?
  • 工程决算条件
  • 双软企业两免三减半企业所得税优惠政策
  • 费用应计入管理费用的有
  • 期末留抵税额可以冲减欠税吗
  • 或有事项确认预计负债的分录
  • win10禁用安全杀毒功能
  • 网络唤醒的原理
  • linux如何开启端口
  • 在建工程转固定资产后如何计提折旧
  • pvlsvr.exe - pvlsvr是什么进程 有什么用
  • macOS Big Sur 11.2 RC 2正式发布(附更新内容)
  • 503错误的原因和解决方法
  • 水利工程水费怎样计算
  • php statement
  • 存放同业属于什么业务
  • 地下停车位是否符合国家安全标准咨询那个部门
  • php使用什么开发工具
  • 项目竣工决算审计与工程结算审核的区别是
  • 村集体经济组织架构
  • 同一控制下企业合并和非同一控制下企业合并的区别
  • php的框架有哪些
  • 投标报名费怎么定
  • thinkphp隐藏index.php
  • 劳务报酬可以扣除合理支出吗
  • 科目汇总表借方发生额为零怎么填
  • 发票金额和打款金额不一致怎么办
  • 技术转让免征增值税需要备案吗
  • 报销具体流程
  • python数据编程
  • 汉诺塔问题动画演示
  • 增值税退税流程怎么操作
  • 交易性金融资产入账价值怎么计算
  • 小规模代开增值税专用发票怎么操作?
  • 多用途卡的监管机构是
  • 预缴增值税怎么计提
  • 一般纳税人怎么算税
  • 长期股权投资如何确认
  • 先付款后开票如何入账
  • 营销策划服务费属于什么服务
  • 财务费用贷方余额怎么结转本年利润
  • 工程保险费属于二类费
  • 听妈妈讲那过去的事情讲课
  • having的用法详解
  • sqlserver 中文字符集
  • win7系统如何提升性能
  • windowsxp忘记密码了怎么办简单点
  • 重装系统清空
  • xp系统内存占用多少
  • rftray.exe - rftray是什么进程 有什么用
  • 安装linux出现grub的原因
  • 如何关闭win10自动升级win11
  • win7如何显示桌面
  • 耳朵前皮下有个小软包
  • cocoscreator动画
  • javascript 数组
  • linux chmod s
  • python如何用
  • jq判断浏览器
  • 利用感情骗取钱财算诈骗吗
  • android内存机制
  • python井字游戏
  • js中key
  • 什么叫关联单位
  • 如何取消个人所得税预约
  • 车船使用税是什么样的单子
  • 印花税零申报表怎么填步骤
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设