位置: 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出错)

  • 鸿蒙怎么添加健康码到桌面(鸿蒙怎么添加桌面快捷方式)

    鸿蒙怎么添加健康码到桌面(鸿蒙怎么添加桌面快捷方式)

  • 成都武侯区小规模代理记账需要注意哪些(成都市武侯区处理机动车违章罚款的地方)

    成都武侯区小规模代理记账需要注意哪些(成都市武侯区处理机动车违章罚款的地方)

  • 抖音怎么设置不看某人动态(抖音怎么设置不让别人评论)

    抖音怎么设置不看某人动态(抖音怎么设置不让别人评论)

  • 苹果交通卡移除后余额在哪里(苹果交通卡移除了余额没有了)

    苹果交通卡移除后余额在哪里(苹果交通卡移除了余额没有了)

  • 戴尔笔记本电脑怎么样(戴尔笔记本电脑怎么连接无线网wifi)

    戴尔笔记本电脑怎么样(戴尔笔记本电脑怎么连接无线网wifi)

  • vivo x27街景地图怎么下载(vivo手机自带地图在哪)

    vivo x27街景地图怎么下载(vivo手机自带地图在哪)

  • 电脑微信语音无法出声(电脑微信语音无麦克风怎么设置)

    电脑微信语音无法出声(电脑微信语音无麦克风怎么设置)

  • 公众号有哪些类型(公众号有哪些类别?A公共号 B企业号C服务号D订阅号)

    公众号有哪些类型(公众号有哪些类别?A公共号 B企业号C服务号D订阅号)

  • 华为电子身份证用途(华为手机身份证扫描件怎么弄)

    华为电子身份证用途(华为手机身份证扫描件怎么弄)

  • 微信朋友圈会限流吗(微信朋友圈会限制发朋友圈吗)

    微信朋友圈会限流吗(微信朋友圈会限制发朋友圈吗)

  • 60v锂电池充满电电压是多少(60V锂电池充满电是多少)

    60v锂电池充满电电压是多少(60V锂电池充满电是多少)

  • 拼多多退货商家不处理怎么办(拼多多退货商家拒收快递会怎么样)

    拼多多退货商家不处理怎么办(拼多多退货商家拒收快递会怎么样)

  • 微信群管理员可以干嘛(微信群管理员可以设置几个)

    微信群管理员可以干嘛(微信群管理员可以设置几个)

  • qq已被暂时冻结会自动解封吗(qq已被暂时冻结一天会自动解封吗)

    qq已被暂时冻结会自动解封吗(qq已被暂时冻结一天会自动解封吗)

  • 电脑怎么提取图片中的文字(电脑怎么提取图片中的图案)

    电脑怎么提取图片中的文字(电脑怎么提取图片中的图案)

  • qq启动失败怎么修复(qq启动失败怎么重新启动)

    qq启动失败怎么修复(qq启动失败怎么重新启动)

  • oppor8007是什么型号(oppor8007参数配置)

    oppor8007是什么型号(oppor8007参数配置)

  • mac地址能定位吗(根据mac地址定位)

    mac地址能定位吗(根据mac地址定位)

  • 下载的字体怎么导入PPT(下载的字体怎么在word中使用)

    下载的字体怎么导入PPT(下载的字体怎么在word中使用)

  • 手机通话记录如何备份与恢复(手机通话记录如何恢复)

    手机通话记录如何备份与恢复(手机通话记录如何恢复)

  • 华为售后检测要多久(华为售后检测要带什么)

    华为售后检测要多久(华为售后检测要带什么)

  • 安卓9.1系统新功能(安卓9.1.1系统)

    安卓9.1系统新功能(安卓9.1.1系统)

  • 小米手机怎么设置防盗系统(小米手机怎么设置自动开关机)

    小米手机怎么设置防盗系统(小米手机怎么设置自动开关机)

  • ipad怎么让b站分屏(ipad2020怎么分屏b站)

    ipad怎么让b站分屏(ipad2020怎么分屏b站)

  • 抖音注销账号算退公会吗(抖音注销账号算退公会)

    抖音注销账号算退公会吗(抖音注销账号算退公会)

  • 苹果打电话没有声音是怎么回事(苹果打电话没有录音功能吗)

    苹果打电话没有声音是怎么回事(苹果打电话没有录音功能吗)

  • 什么是电流(图文)(什么是电流定律)

    什么是电流(图文)(什么是电流定律)

  • 实际退税额怎么算
  • 小规模纳税人公户的钱怎么转出来
  • 什么情况下不能做近视激光手术
  • 收到以前年度退所得税分录
  • 残疾人就业保障金会计分录怎么做
  • 缴纳的增值税在资产负债表中怎么体现
  • 工商银行特色贷款
  • 银行承兑汇票背书可以拆分
  • 小规模增值税征收条件
  • 外资企业银行贷款限制
  • 外协加工分录
  • 收到发票冲预付账款摘要怎么写
  • 失控进项发票转出 补税做账
  • 物业公司代收电费标准
  • 赞助失败案例
  • 应纳税所得额是开票金额吗
  • 农贸市场可以收什么的费
  • 剑灵玩一会就崩溃
  • win10 0×0000007b怎么解决
  • 如何设置自动登录账号
  • 取得专用发票是进项还是销项
  • 股东大会的召集有权
  • 交易性金融资产包括哪些项目
  • linux鼠标左键失灵
  • 个税手续费会计分录
  • php设计思路
  • php读取目录
  • passwd -s命令
  • php语言版本
  • 增值税核算应采用什么科目
  • php 登陆
  • Linux | 将SpringBoot+Vue项目部署到服务器上
  • javascript速成
  • 车间主要有哪些事故风险
  • python的顺序
  • discuz怎么使用
  • sqlserver2019查看表
  • 运输公司开具的增值税专用发票谁抵扣
  • 代扣代缴通用缴款书怎么打印
  • 法人与财务负责人不应为同一人
  • 用友怎么取消对账结果
  • 收据可以当发票吗?
  • 哪些发票必须备注
  • ibm db2认证
  • 未开票收入如何计提增值税
  • 工资与社保的关系图
  • 水利建设基金申报表哪里
  • 公司收到财政局奖励怎么记账
  • 企业跨年度的收入退回应该如何进行会计处理?
  • 税务滞纳金计入什么会计科目
  • 过路费属于会计哪个科目
  • 飞机票抵扣进项税申报表的填写
  • 一般纳税人可抵扣的票证有哪些?
  • 生产的半成品怎么做分录
  • 供货商做产品配送怎么做
  • 内帐与外帐的哪个更好
  • win8系统怎样
  • Win10 PC/Mobile Creators快速预览版14959今日推送
  • linux的ntp服务
  • linux ifconfig命令详解
  • SmartFTP.exe - SmartFTP是什么进程
  • ubuntu发行版介绍
  • Win7的sysprep工具怎么用 win7自带sysprep工具重置系统方法
  • win8系统如何打开摄像头
  • ip地址xp系统
  • windows where命令
  • 为wdcp面板的lnmp服务器添加ipv6支持的方法介绍
  • 那些年的我们什么意思
  • bootstrap应用
  • ie6怎么设置兼容性
  • opencv for linux
  • 玩转cmd命令
  • jquery audio
  • Python3使用requests发闪存的方法
  • Python通过行和列提取数据
  • 电子税务局如何下载财务报表
  • 国家税务总局安徽省税务局公告
  • 江苏省税务局电子发票
  • 初始密码是几位数
  • 开发商卖商铺需要哪些资质条件?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设