HTML代码:
<div class="now-content">
<div class="list">
<ul
v-infinite-scroll="loadMore"
infinite-scroll-disabled="isMoreLoading"
infinite-scroll-distance="10"
infinite-scroll-immediate-check="true"
>
<router-link :to="{path:'/detail',query:{id:data.id}}" tag="li" class="list-item" v-for="data in moviesList" :key="data.id">
<div class="img">
<img :src="data.imgUrl" alt=""/>
</div>
<div class="message">
<div class="message-title">
<h2>{{data.title}}</h2>
</div>
<div class="message-content">
<span class="mark" alt="观众评分">{{data.mark}}</span>
<span class="role" alt="主演人员">主演:{{data.role}}</span>
<span class="show-info">{{data.show_info}}</span>
</div>
</div>
<div class="button">购票</div>
</router-link>
</ul>
<div class="loading-box" v-if="isLoading">
<mt-spinner type="snake" class="loading-more" color="#26a2ff" v-if="isAnimation"></mt-spinner>
<span class="loading-more-txt">加载中.....</span>
</div>
<div class="no-more" v-if="noMore">没有更多了</div>
<footer style="width:100%;height:40px;background-color:white;"></footer>
</div>
</div>
js代码:
data(){
return{
moviesList:[],
newList:[],
isMoreLoading:false,
isLoading:false,
noMore:false,
isAnimation:false,
i:0
}
},
我是刚开始的时候是设置加载3条数据
getdetail:function(){
var _vm = this;
let i = 0;
this.$axios.get("http://localhost:3000/users")
.then((res)=>{
_vm.moviesList = res.data.slice(i * 3,( i + 1 ) * 3)
})
.catch((error)=>{
console.log(error)
})
},
然后每次下拉的时候触发loadMore事件,继续加载3条数据,直到数据加载完毕
loadMore(){
this.isMoreLoading = true;//禁用
this.isLoading = true;//启用加载中
this.isAnimation = true;
setTimeout(()=>{
var _vm = this;
_vm.$axios.get("http://localhost:3000/users")
.then((res)=>{
// console.log(res.data)
_vm.i++;
_vm.newList = res.data.slice( _vm.i * 3, ( _vm.i + 1 ) * 3);
if(_vm.newList.length == 0){
// console.log("没有更多了")
_vm.noMore = true;
_vm.isLoading = false;
_vm.isMoreLoading = true;
_vm.isAnimation = false;
return ;//当等于零的时候,使用return返回,这样就不会没有数据也重复加载
}else{
// console.log("加载更多")
_vm.isLoading = true;
_vm.isAnimation = true;
_vm.newList.forEach(function(data){
_vm.moviesList.push(data)
})
}
})
.catch((error)=>{
console.log(error)
});
_vm.isMoreLoading = false;
},500)
}