vue下拉加载插件 之vue-infinite-loading

本文介绍了在Vue项目中如何使用vue-infinite-loading插件实现下拉加载更多的功能。首先通过cnpm安装插件,然后在页面模板中引入并配置,最后在方法中处理数据请求和无限滚动的触发事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设你的项目已经可以正常运行
(1) 安装淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org
    (安装插件有时需要翻墙,为了避免这种情况我直接安装了淘宝镜像 ) 
(2) 安装插件 cnpm install --save vue-infinite-loading
(3) 在需要的页面中引入vue-infinite-loading :
    <template>
      <div class="container" >
        <div class="firstMs" v-for="item in this.getMoreExpertList">
          <router-link :to="{path: '/teacher',query:{user_id:item.user_id}}">
            <img :src="item.expert_bg" class="big_img">
          </router-link>
          <div class="msContent">
             <router-link :to="{path: '/teacher',query:{user_id:item.user_id}}">
              <span>{{item.name}}</span>
              <span>{{item.title_text}}</span>
             </router-link>
          </div>
          <div class="msNum">
            <img src="/static/img/icon4.png">
            <span>{{item.watch_num}}</span>
          </div>
        </div>
        <infinite-loading :on-infinite="onInfinite" ref="infiniteLoading"></infinite-loading>
        <!-- 放在循环体下,当到此位置时会执行onInfinite方法 -->
    </div>
    </template>
    <script type="text/ecmascript-6">
    import InfiniteLoading from 'vue-infinite-loading';
    import axios from 'axios';
    const api = 'http://hn.algolia.com/api/v1/search_by_date';
    export default {
      data() {
        return {
          getMoreExpertList:[],  //用来存放数据的数组
          page_no:1,   //默认显示第一页数据
          page_size:7,//每次请求7条
        }
      },
      components: {
        InfiniteLoading
      },
      methods: {
        getCourseList(){
          axios.get(api, {
            params: {
              page_no:this.page_no,
              page_size:this.page_size
            }
          }).then((res) => {
           if (res.code == 0) {
              // 如果查询结果为真
              if (res.data.expert_lists.experts.length) {
                // 如果有数据则进入将新的数据与老的数据拼接
                this.getMoreExpertList = this.getMoreExpertList.concat(res.data.expert_lists.experts);
                this.$refs.infiniteLoading.$emit('$InfiniteLoading:loaded');
                this.page_no+=1;  //将页码加1
              }else{
                this.$refs.infiniteLoading.$emit('$InfiniteLoading:complete'); //没有数据显示没有更多
              }
            }
          }).catch((err) => {
              console.log(err)
          })
        },
        onInfinite() {
          if(this.page_no!=1){  //是因为我在页面初始化时请求了第一页的数据,所以当页面等于2时才请求数据
            this.getCourseList()
          }
        },
          
      },
      created() {
        this.getMoreExpertList.length = 0;
        this.getCourseList();
      }
    }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值