vue实现滚动加载

//template:
<template>
<ul class="Prolist">
                <li v-for="(item,i) in commrecommend" :key="i">
                    <router-link :to="'/Detaiils/'+item.commId" class="">
                        <div class="Proimg"> <a href="#"><img :src="tempHttpserver+item.imgPath"  width="180" height="180" alt=""/></a> </div>
                        <div class="ProTxt"> <a href="#">
                        <h2>{{item.commName}}</h2>
                        <p>{{item.commExplain}}</p>
                        <span>{{item.salesAmt}}</span></a></div>
                    </router-link> 
                </li>
                <div class="clearfix" style="clear:both"></div>
</ul>
</template>

//js
<script>


export default {
    data(){
        return{
            categoryId:"",
            commrecommend:[],//商品类目下得商品
            number:0,
            tempHttpserver:'',
            page:1,
            onFetching:false,
        }
    },
    mounted(){
        let _this = this;
            // 设置一个开关来避免重负请求数据
        let sw = true;
        //this.categoryId=this.$route.params.id;
        _this.categoryId=_this.$route.params.id;
        _this.getData(_this.$route.params.id);
        _this.tempHttpserver=tempHttpserver;

        
        document.addEventListener('scroll',this.scrollLoad)
        
    
    
    },
    watch:{
        $route(to){ 
            
             this.categoryId=this.$route.params.id;
             this.page=1;
             this.commrecommend=[];
             //console.log(this.categoryId1)
             this.getData(this.$route.params.id);
        }
    },
    components:{
        PullTo
    },
    methods:{

    
        getData(categoryId1){
            let _this = this; 
            //let categoryId1=this.$route.params.id
            _this.axios.post(findComm,{
                categoryId:categoryId1,
                page:_this.page,
                limit:5
            })
            .then((result) => {
                if (result.data.code="000000") {
                    var data=result.data.data.listComm;
                    //console.log(data);
                    //this.commrecommend=data;
                    _this.commrecommend.push(...data);
                   // _this.page++;
                    sw = true;
                } 
            }).catch((err) => {
                
            });

        },

        scrollLoad(){
            let scrollHeight= document.documentElement.scrollHeight || document.body.scrollHeight; //document的滚动高度
            let nowScotop = document.documentElement.clientHeight || document.body.clientHeight;  //可视区高度
            let wheight= document.documentElement.scrollTop || document.body.scrollTop; //已滚动高度

                
                if (this.onFetching) {
                        // do nothing
                } else {
                    if (nowScotop >= scrollHeight - wheight-5 ) {
                    this.onFetching = true
                    setTimeout(() => {
                        
                        this.page+=1
                        this.getData(this.categoryId) //加载列表的请求方法
                        this.onFetching = false
                    }, 500)
                    }
                }
        }

    }
}


</script>

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值