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

  • 怎样才能增加邮件群发列表订购的方法(如何增加邮件收件人)

    怎样才能增加邮件群发列表订购的方法(如何增加邮件收件人)

  • 苹果11屏幕黑白怎么调回来(苹果11屏幕黑白屏)

    苹果11屏幕黑白怎么调回来(苹果11屏幕黑白屏)

  • garageband是什么(garbage意思是什么)

    garageband是什么(garbage意思是什么)

  • 手机爱奇艺打不开qsv文件(手机爱奇艺打不开也卸载不了)

    手机爱奇艺打不开qsv文件(手机爱奇艺打不开也卸载不了)

  • ios11支持哪些设备(iphone11支持哪些功能)

    ios11支持哪些设备(iphone11支持哪些功能)

  • soul注销了别人看到是怎样的(soul注销了密友知道吗)

    soul注销了别人看到是怎样的(soul注销了密友知道吗)

  • 腾讯会议能回放视频吗(腾讯会议录屏转文字)

    腾讯会议能回放视频吗(腾讯会议录屏转文字)

  • 苹果8有面部解锁吗(苹果8面部解锁软件下载)

    苹果8有面部解锁吗(苹果8面部解锁软件下载)

  • 苹果充电线为什么失灵(苹果充电线为什么显示不支持此配件)

    苹果充电线为什么失灵(苹果充电线为什么显示不支持此配件)

  • 爱奇艺清晰度怎么调(爱奇艺清晰度怎么每次都要调)

    爱奇艺清晰度怎么调(爱奇艺清晰度怎么每次都要调)

  • 华为手机怎么修改安装未知应用权限(华为手机怎么修改日期和时间)

    华为手机怎么修改安装未知应用权限(华为手机怎么修改日期和时间)

  • 相册视频没有声音怎么办(相册视频没有声音怎么恢复)

    相册视频没有声音怎么办(相册视频没有声音怎么恢复)

  • 轮廓文本2在哪儿(轮廓文本2什么意思)

    轮廓文本2在哪儿(轮廓文本2什么意思)

  • 苹果11app与数据怎么选择(苹果11app与数据怎么选择传输)

    苹果11app与数据怎么选择(苹果11app与数据怎么选择传输)

  • 手机应用程序错误怎么解决(手机应用程序错误)

    手机应用程序错误怎么解决(手机应用程序错误)

  • 一加7pro支持分屏吗(一加7pro有分屏吗)

    一加7pro支持分屏吗(一加7pro有分屏吗)

  • 微信正在输入几种情况(微信正在输入几秒)

    微信正在输入几种情况(微信正在输入几秒)

  • vivo怎么复制门禁卡(vivo怎么复制门禁卡在哪)

    vivo怎么复制门禁卡(vivo怎么复制门禁卡在哪)

  • 抖音null是谁(抖音名null是谁)

    抖音null是谁(抖音名null是谁)

  • 安卓手机扫描功能在哪(安卓手机扫描文件在哪里)

    安卓手机扫描功能在哪(安卓手机扫描文件在哪里)

  • 瀑布屏是什么意思(瀑布屏到底好不好)

    瀑布屏是什么意思(瀑布屏到底好不好)

  • 电脑自动开关机在哪里设置(电脑自动开关机在哪里设置方法)

    电脑自动开关机在哪里设置(电脑自动开关机在哪里设置方法)

  • 电脑上照片怎么传到手机上(电脑上照片怎么打印在a4纸上)

    电脑上照片怎么传到手机上(电脑上照片怎么打印在a4纸上)

  • vivo手机ai键有什么用(vivox23的ai键是什么)

    vivo手机ai键有什么用(vivox23的ai键是什么)

  • 华为nova3充电慢(华为nova3充电慢耗电快)

    华为nova3充电慢(华为nova3充电慢耗电快)

  • 农特区块链app开发有哪些功能(农业区块链平台)

    农特区块链app开发有哪些功能(农业区块链平台)

  • 【中秋快乐】 ( © shutterstock )(中秋快乐图片大全)

    【中秋快乐】 ( © shutterstock )(中秋快乐图片大全)

  • 我一定要用vue3+ts吗?(我一定要用自己的双手拼出来)

    我一定要用vue3+ts吗?(我一定要用自己的双手拼出来)

  • 采购价格含税吗
  • 个人所得税财产租赁所得税率表
  • 发票超过认证期有什么影响
  • 劳保用品销售
  • 扫码开票开错了怎么改
  • 固定资产计提减值后可以转回吗
  • 委托加工物资的会计科目
  • 包装物押金计入成本吗
  • 设计、制造
  • 还有预算外资金的说法吗
  • 高温补贴能以别的形式发放吗
  • 有限合伙合伙人要求
  • 公司车子的保养费怎么算
  • 去年的成本没有入账
  • 所得税汇算清缴退税会计分录怎么做
  • 收到对方开的发票怎么做账
  • 软件著作权如何入账
  • 理财产品 会计分录
  • 年收入超过12万什么时候申报
  • 建筑业预收账款如何缴税
  • 办理核定企业所需资料
  • 个人所得税的速算扣除数是什么意思
  • 广告租赁公司
  • 初级考试备考计划
  • etc充值发票可以抵扣税吗
  • 租车开具的电子发票
  • 小规模农产品可以抵扣吗
  • 所得税汇算清缴分录怎么做
  • 华为分享的文件在电脑哪个文件夹
  • 季度所得税如何更正申报
  • 刚毕业的学生可以买学生票吗
  • 销售折让负数会计分录
  • 其他应付款期初余额在哪方
  • 绿萝可以放卧室吗晚上睡觉对人害吗
  • win7系统任务计划在哪里
  • 代理业务怎么记账
  • 实收资本与注册资本之间的关系
  • 企业接受现金捐赠要交税吗
  • 换出长期股权投资的会计处理
  • Yii CDBCriteria常用方法实例小结
  • 发生广告费的会计分录
  • 实现扩展功能的快捷键
  • 特征融合add
  • php for break
  • php加密zend
  • php floatval
  • 为什么会有不同的人种
  • 文化事业建设费的征收范围
  • sqlserver四舍五入到整数
  • python的next()
  • sqlserver2016使用方法
  • Windows下Postgresql数据库的下载与配置方法
  • mysql数据类型char
  • 普票是啥意思
  • 做账的好处
  • 其他收益和其他综合收益属于什么科目
  • 查账征收个体户经营所得税怎么计算
  • 支付的劳务派遣服务费计入什么科目
  • 建筑业发票的相关要求
  • 未分配利润高怎么解释
  • 工业企业产值如何确定
  • 缴纳工会经费如何记账
  • 代理记账公司都是假账么
  • sql server错误代码1608
  • sql创建表日期格式
  • windows需要更新吗?
  • 在Windows Server 2008服务器的三种角色
  • mac系统操作的小技巧
  • centos安装问题
  • win7键盘没反应是怎么回事
  • 怎么修复xp系统
  • linux使用方式有哪些方面
  • linux系统ftp服务
  • qqpcrtp.exe是什么进程 如何删除qqpcrtp进程
  • SFC无需光盘出马,硬盘搞定
  • win10激活突然失效
  • Python中str is not callable问题详解及解决办法
  • 全面解析李可破格救心汤
  • 公司0申报怎么申报视频
  • 服务类发票 如何入账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设