vue使用mint-ui實現(xiàn)下拉刷新和無限滾動的示例代碼
在開發(fā)web-app中,總會遇到v-for出來的li會有很多,當數(shù)據(jù)達幾百上千條的時候,一起加載出來會造成用戶體驗很差的效果。
這時候我們可以使用無限滾動和下拉刷新來實現(xiàn)控制顯示的數(shù)量,當刷新到底部的邊界的時候會觸發(fā)無限滾動的事件,再次加載一定數(shù)量的條目。
還是拿在項目中的功能來舉栗子介紹。

有個列表,幾千條數(shù)據(jù),做分頁查詢,限制每次顯示查詢20條,每次拉到最后20條邊緣的時候,觸發(fā)無限滾動,這時候會出現(xiàn)加載圖標,繼續(xù)加載后續(xù)20條數(shù)據(jù),加載到最后的時候會提示數(shù)據(jù)“加載完畢”。

項目的ui使用的mint-ui,所以使用的無限滾動也是mint-ui里面的,詳細參考官方文檔
接下來給大家介紹代碼實現(xiàn):
1、為元素添加 v-infinite-scroll 指令即可使用無限滾動。滾動該元素,當其底部與被滾動元素底部的距離小于給定的閾值(通過 infinite-scroll-distance 設(shè)置)時,綁定到 v-infinite-scroll 指令的方法就會被觸發(fā)。
<!--ul里面幾個scoller就是無限滾動的幾個api-->
<ul class="mui-table-view" v-infinite-scroll="loadMore" infinite-scroll-disabled="moreLoading" infinite-scroll-distance="0" infinite-scroll-immediate-check="false">
<!--li數(shù)據(jù)遍歷循環(huán)部分-->
<li class="mui-table-view-cell" v-for="item in list">
<a class="mui-navigate-right">
<span class="mui-pull-left">{{item.name}}</span>
<span class="mui-pull-right">{{item.date.substring(0,10)}}</span>
</a>
</li>
<!--底部判斷是加載圖標還是提示“全部加載”-->
<li class="more_loading" v-show="!queryLoading">
<mt-spinner type="snake" color="#00ccff" :size="20" v-show="moreLoading&&!allLoaded"></mt-spinner>
<span v-show="allLoaded">已全部加載</span>
</li>
</ul>
2、script部分
<script>
export default {
data() {
return {
//初始化無限加載相關(guān)參數(shù)
queryLoading: false,
moreLoading: false,
allLoaded: false,
totalNum: 0,
pageSize: 20,
pageNum: 1,
}
},
computed: {
params() {
return{
//這里先定義要傳遞給后臺的數(shù)據(jù)
//然后將每次請求20條的參數(shù)一起提交給后臺
pageSize: this.pageSize
}
}
},
methods: {
//無限加載函數(shù)
loadMore() {
if(this.allLoaded){
this.moreLoading = true;
return;
}
if(this.queryLoading){
return;
}
this.moreLoading = !this.queryLoading;
this.pageNum++;
this.$http.post("請求后臺數(shù)據(jù)的接口",Object.assign({pageNum:this.pageNum},this.params)).then((res) => {
if(res.sData && res.sData.list){
this.list = this.list.concat(res.sData.list);
this.allLoaded = this.debtList.length==this.totalNum;
}
this.moreLoading = this.allLoaded;
});
}
},
}
</script>
到這里就可以實現(xiàn)無限滾動了,這里結(jié)合了mint-ui的Infinite scroll和Spinner
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- vue.js移動端app之上拉加載以及下拉刷新實戰(zhàn)
- vue.js整合vux中的上拉加載下拉刷新實例教程
- 解決Vue使用mint-ui loadmore實現(xiàn)上拉加載與下拉刷新出現(xiàn)一個頁面使用多個上拉加載后沖突問題
- vueScroll實現(xiàn)移動端下拉刷新、上拉加載
- vue插件mescroll.js實現(xiàn)移動端上拉加載和下拉刷新
- vue2.0 移動端實現(xiàn)下拉刷新和上拉加載更多的示例
- vue使用better-scroll實現(xiàn)下拉刷新、上拉加載
- vue移動端實現(xiàn)下拉刷新
- vue移動端下拉刷新和上拉加載的實現(xiàn)代碼
- vue實現(xiàn)原生下拉刷新
相關(guān)文章
Vue3?實現(xiàn)驗證碼倒計時功能(刷新保持狀態(tài))
倒計時的運用場景是需要經(jīng)常用到的,但是根據(jù)業(yè)務(wù)的不同,好比手機驗證碼或者是郵箱驗證碼之類的,即使用戶跳轉(zhuǎn)到其它頁面或者刷新,再次回到登錄也,驗證碼的倒計時也得保持狀態(tài),下面通過本文給大家分享Vue3?驗證碼倒計時功能實現(xiàn),感興趣的朋友一起看看吧2022-08-08
vue2.0 中使用transition實現(xiàn)動畫效果使用心得
這篇文章主要介紹了vue2.0 中使用transition實現(xiàn)動畫效果使用心得,本文通過案例知識給大家介紹的非常詳細,需要的朋友參考下吧2018-08-08
Vue中splice()方法對數(shù)組進行增刪改等操作的實現(xiàn)
vue中對數(shù)組的元素進行刪除,以前一直以為這個方法是vue中特有的,后來百度之后才知道原來是js的一個寫法,下面這篇文章主要給大家介紹了關(guān)于Vue中splice()方法對數(shù)組進行增刪改等操作的實現(xiàn)方法,需要的朋友可以參考下2023-05-05
vue2?element-ui?el-checkbox視圖不更新問題及解決
作者在開發(fā)過程中遇到了視圖不更新的問題,最終通過改變一個無關(guān)緊要的響應(yīng)式數(shù)據(jù)來解決,讓視圖發(fā)生改變2024-12-12

