滑动加载更多 vue-data-loading

<vue-data-loading :loading="loading" :listens="['pull-down', 'infinite-scroll']" @infinite-scroll="infiniteScroll" @pull-down="pullDown">
<!--your data here-->
</vue-data-loading>
 <div slot="infinite-scroll-loading">加载中...</div>
 <div slot="completed">已全部加载</div> 

官网: vue-data-loading/README_CN.md at master · bedlate/vue-data-loading · GitHub

属性

loading

类型:boolean

默认:false

当 loading 为 true 时将不会触发任何事件, 所以你可以使用它来控制加载数据


completed

类型: boolean

默认: false

当设置为 true 时将不会再触发 infinite-scroll 事件.当所有数据全部加载完毕后,建议设置为 true


init-scroll

类型: boolean

默认: false

如果设置为 true 时,组件加载完毕后将会触发一次 infinite-scroll 事件.通常用来处理页面首次加载时候接收数据.


distance

类型: number

默认: 60

单位: px

显示全部加载等离底部的距离


offset

类型: number

默认: 0

单位: px

有时候你可能希望调节距离底部的距离,来提前触发 infinite-scroll


listens

类型: array

默认: ['infinite-scroll', 'pull-down', 'pull-up']

不在数组中的事件将不会被触发.


container

类型: string

必须: false

所有事件 events 默认绑定在 window ,如果你想自定义外层容器,需要指定其 ref .


事件

infinite-scroll

当容器已经达到窗口底部时触发


pull-down

当容器已经下拉超过 distance 属性时触发


pull-up

当容器已经上拉超过 distance 属性时触发

scrolling

当容器滚动时触发.

有个回调参数,返回当前容器的 (scrollTop, scrollLeft).


Slots

infinite-scroll-loading

当已经滚动到窗口底部,且正在 loading 时显示

pull-down-before

当正在下拉,且下拉距离小于 distance 属性显示

pull-down-ready

当正在下拉,且下拉距离不小于 distance 属性显示

pull-down-loading

当正在下拉,且下拉距离不小于 distance 属性,且松手时数据正在 loading 时显示

pull-up-before

当正在上拉,且上拉距离小于 distance 属性显示

pull-up-ready

当正在上拉,且上拉距离不小于 distance 属性显示

pull-up-loading

当正在上拉,且上拉距离不小于 distance 属性,且松手时数据正在 loading 时显示

completed

当数据加载完毕(completed),且没有加载中(loading,如下拉可以出发刷新)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现滑动分页列表,可以使用Vue.js配合一些插件来完成,以下是一些步骤: 1. 安装Vue.js并创建Vue实例; 2. 引入Vue插件vue-infinite-loading,它提供了无限滚动加载数据的功能; 3. 创建一个包含列表数据的组件,使用v-for指令来渲染列表; 4. 在组件中使用vue-infinite-loading的指令,在滚动到底部时自动加载下一页数据; 5. 监听滚动事件,当滚动到底部时触发加载数据; 6. 在组件中使用CSS样式来实现滑动效果。 以下是一个简单的示例代码: ```html <template> <div class="list-container" ref="listContainer"> <div v-for="(item, index) in listData" :key="index" class="list-item">{{ item }}</div> <div v-infinite-loading="loadMore" :infinite-disabled="isLoading" infinite-distance="10%"> <div v-if="isLoading"><i class="fa fa-spinner fa-spin"></i> 加载中...</div> <div v-else><i class="fa fa-arrow-down"></i> 下拉加载更多</div> </div> </div> </template> <script> import InfiniteLoading from 'vue-infinite-loading'; export default { components: { InfiniteLoading, }, data() { return { listData: [], currentPage: 1, isLoading: false, }; }, mounted() { this.loadData(); window.addEventListener('scroll', this.handleScroll); }, methods: { loadData() { // 模拟异步加载数据 this.isLoading = true; setTimeout(() => { for (let i = 0; i < 10; i++) { this.listData.push(`Item ${this.listData.length + 1}`); } this.currentPage++; this.isLoading = false; }, 1000); }, loadMore() { this.loadData(); }, handleScroll() { const container = this.$refs.listContainer; const scrollTop = container.scrollTop; const scrollHeight = container.scrollHeight; const clientHeight = container.clientHeight; if (scrollTop + clientHeight >= scrollHeight) { this.loadData(); } }, }, }; </script> <style> .list-container { height: 300px; overflow-y: scroll; } .list-item { height: 50px; line-height: 50px; border-bottom: 1px solid #eee; } </style> ``` 在上面的示例中,我们使用了vue-infinite-loading插件来实现滑动分页列表的功能。同时,我们还监听了滚动事件,在滚动到底部时触发自动加载下一页数据。通过CSS样式设置了列表的高度和滑动效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值