您现在的位置是:首页 >技术杂谈 >【vue2 pc端】下拉滑动加载更多 vue-data-loading网站首页技术杂谈

【vue2 pc端】下拉滑动加载更多 vue-data-loading

嘿,小苹果 2023-06-06 16:00:02
简介【vue2 pc端】下拉滑动加载更多 vue-data-loading

官网地址
在这里插入图片描述
在这里插入图片描述

页面项目中使用

<template>
		
		 <!--  空数据时显示 -->
 		<div class="nonono">
        	<img src="@/assets/img/404_cloud.png" alt="" v-if="goodslist.length <= 0" class="nonnonoimg">
      	</div>

	  <vue-data-loading 
      :loading="loading" 
      :completed="completed"
      :listens="['infinite-scroll', 'pull-down']" 
      :init-scroll="true"
       @infinite-scroll="infiniteScroll" 
       @pull-down="pullDown">
        <card :list="goodslist"></card>
        <div>
        	 <!--  具体的内容显示 -->
        	<div v-for='(item,i) in goodslist' :key='i'>{{item.name}}</div>
        </div>
        <div slot="completed">已全部加载</div> 
      </vue-data-loading>
		
	<!--  没有滑到底,并且还有更多数据时显示 -->
 	<div class="xiahuabox" v-if="loading==false&&completed==false">
        <div>下滑查看更多</div>
        <img src="@/assets/img/xiaxia.png" alt="" class="xiaxiaimg">
     </div>
     
</template>
<script>
import VueDataLoading from 'vue-data-loading'
export default {
components: { VueDataLoading },
 data() {
        return {
              goodslist :[],
        	  loading: false,  // 加载中
	          completed: false, // 加载完毕true
	          page: 1,
	          total:0, //总条数
        }
  	},


 methods: {
  pullUp() {
          this.page++
          this.getlist()
      },
      pullDown() {
          this.goodslist = []
          this.page = 1
          this.completed = false
          this.getlist()
      },
      infiniteScroll() {
          this.page++
          this.getlist()
      },
       getlist(){
       	 	this.loading = true;
       	 	  this.$apiUrl.lmo_goods(data).then((res) => {
		          // 加载完
		          if(this.goodslist.length >= Number(res.data.total)) {
		              this.completed = true
		              this.loading = false
		              return
		          }
		
		          this.loading = false;
		          this.goodslist = this.goodslist.concat(res.data.list);
		          this.total = Number(res.data.total);
		        });
		
       }
 }
}

</script>
<style lang='scss' scoped>
	
   // 空数据
  .nonono{
    text-align: center;
    margin: 50px 0;
  }
  .nonnonoimg{
    width: 240px;
    height: 180px;
  }
	
  // 下拉滑动查看更多
  .xiahuabox{
    margin: 20px auto 22px;
    text-align: center;
    div{
        font-size: 17px;
        color: #999999;
    }
    img{
      width: 13px;
      height: 13px;
      margin-top: 20px;
    }
  }
</style>

属性

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,如下拉可以出发刷新)

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。