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

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

項(xiàng)目的ui使用的mint-ui,所以使用的無(wú)限滾動(dòng)也是mint-ui里面的,詳細(xì)參考官方文檔
接下來(lái)給大家介紹代碼實(shí)現(xiàn):
1、為元素添加 v-infinite-scroll 指令即可使用無(wú)限滾動(dòng)。滾動(dòng)該元素,當(dāng)其底部與被滾動(dòng)元素底部的距離小于給定的閾值(通過(guò) infinite-scroll-distance 設(shè)置)時(shí),綁定到 v-infinite-scroll 指令的方法就會(huì)被觸發(fā)。
<!--ul里面幾個(gè)scoller就是無(wú)限滾動(dòng)的幾個(gè)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>
<!--底部判斷是加載圖標(biāo)還是提示“全部加載”-->
<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 {
//初始化無(wú)限加載相關(guān)參數(shù)
queryLoading: false,
moreLoading: false,
allLoaded: false,
totalNum: 0,
pageSize: 20,
pageNum: 1,
}
},
computed: {
params() {
return{
//這里先定義要傳遞給后臺(tái)的數(shù)據(jù)
//然后將每次請(qǐng)求20條的參數(shù)一起提交給后臺(tái)
pageSize: this.pageSize
}
}
},
methods: {
//無(wú)限加載函數(shù)
loadMore() {
if(this.allLoaded){
this.moreLoading = true;
return;
}
if(this.queryLoading){
return;
}
this.moreLoading = !this.queryLoading;
this.pageNum++;
this.$http.post("請(qǐng)求后臺(tái)數(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>
到這里就可以實(shí)現(xiàn)無(wú)限滾動(dòng)了,這里結(jié)合了mint-ui的Infinite scroll和Spinner
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue.js移動(dòng)端app之上拉加載以及下拉刷新實(shí)戰(zhàn)
- vue.js整合vux中的上拉加載下拉刷新實(shí)例教程
- 解決Vue使用mint-ui loadmore實(shí)現(xiàn)上拉加載與下拉刷新出現(xiàn)一個(gè)頁(yè)面使用多個(gè)上拉加載后沖突問(wèn)題
- vueScroll實(shí)現(xiàn)移動(dòng)端下拉刷新、上拉加載
- vue插件mescroll.js實(shí)現(xiàn)移動(dòng)端上拉加載和下拉刷新
- vue2.0 移動(dòng)端實(shí)現(xiàn)下拉刷新和上拉加載更多的示例
- vue使用better-scroll實(shí)現(xiàn)下拉刷新、上拉加載
- vue移動(dòng)端實(shí)現(xiàn)下拉刷新
- vue移動(dòng)端下拉刷新和上拉加載的實(shí)現(xiàn)代碼
- vue實(shí)現(xiàn)原生下拉刷新
相關(guān)文章
3分鐘搞定vite項(xiàng)目(vue/react)使用vite-plugin-pwa配置為pwa應(yīng)用
這篇文章主要介紹了3分鐘搞定vite項(xiàng)目(vue/react)使用vite-plugin-pwa配置為pwa應(yīng)用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-02-02
Vue element-ui父組件控制子組件的表單校驗(yàn)操作
這篇文章主要介紹了Vue element-ui父組件控制子組件的表單校驗(yàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
在Vue的mounted中仍然加載渲染不出echarts的方法問(wèn)題
這篇文章主要介紹了在Vue的mounted中仍然加載渲染不出echarts的方法問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
vue中遇到scrollIntoView無(wú)效問(wèn)題及解決
這篇文章主要介紹了vue中遇到scrollIntoView無(wú)效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Vue代理請(qǐng)求數(shù)據(jù)出現(xiàn)404問(wèn)題及解決
這篇文章主要介紹了Vue代理請(qǐng)求數(shù)據(jù)出現(xiàn)404的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
詳解Vue3中shallowRef和shallowReactive的使用
這篇文章主要為大家介紹了Vue3中shallowRef和shallowReactive函數(shù)的使用方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Vue有一定的幫助,需要的可以參考一下2022-07-07

