vue mintui-Loadmore結(jié)合實(shí)現(xiàn)下拉刷新和上拉加載示例
mintui是餓了么團(tuán)隊(duì)針對vue開發(fā)的移動端組件庫,方便實(shí)現(xiàn)移動端的一些功能,這里只用了Loadmore功能實(shí)現(xiàn)移動端的上拉分頁刷新,下拉加載數(shù)據(jù),廢話不說上代碼。
<template> <div class="main-body" :style="{'-webkit-overflow-scrolling': scrollMode}"> <v-loadmore :top-method="loadTop" :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" :auto-fill="false" ref="loadmore"> <ul class="list" v-for="(val, key) in pageList"> <li> <div>我是小11</div> <div>我是小11</div> </li> </ul> </v-loadmore> </div> </template> <script> import {Loadmore} from 'mint-ui'; export default { data:function() { return { searchCondition:{ //分頁屬性 pageNo:"1", pageSize:"10" }, pageList:[], allLoaded: false, //是否可以上拉屬性,false可以上拉,true為禁止上拉,就是不讓往上劃加載數(shù)據(jù)了 scrollMode:"auto" //移動端彈性滾動效果,touch為彈性滾動,auto是非彈性滾動 } }, components: { 'v-loadmore':Loadmore // 為組件起別名,vue轉(zhuǎn)換template標(biāo)簽時不會區(qū)分大小寫,例如:loadMore這種標(biāo)簽轉(zhuǎn)換完就會變成loadmore,容易出現(xiàn)一些匹配問題 // 推薦應(yīng)用組件時用a-b形式起名 }, mounted(){ this.loadPageList(); //初次訪問查詢列表 }, methods: { loadTop:function() { //組件提供的下拉觸發(fā)方法 //下拉加載 this.loadPageList(); this.$refs.loadmore.onTopLoaded();// 固定方法,查詢完要調(diào)用一次,用于重新定位 }, loadBottom:function() { // 上拉加載 this.more();// 上拉觸發(fā)的分頁查詢 this.$refs.loadmore.onBottomLoaded();// 固定方法,查詢完要調(diào)用一次,用于重新定位 }, loadPageList:function (){ // 查詢數(shù)據(jù) this.api.PageList(this.searchCondition).then(data =>{ // 是否還有下一頁,加個方法判斷,沒有下一頁要禁止上拉 this.isHaveMore(data.result.haveMore); this.pageList = data.result.pageList; this.$nextTick(function () { // 原意是DOM更新循環(huán)結(jié)束時調(diào)用延遲回調(diào)函數(shù),大意就是DOM元素在因?yàn)槟承┰蛞M(jìn)行修改就在這里寫,要在修改某些數(shù)據(jù)后才能寫, // 這里之所以加是因?yàn)橛袀€坑,iphone在使用-webkit-overflow-scrolling屬性,就是移動端彈性滾動效果時會屏蔽loadmore的上拉加載效果, // 花了好久才解決這個問題,就是用這個函數(shù),意思就是先設(shè)置屬性為auto,正?;瑒?,加載完數(shù)據(jù)后改成彈性滑動,安卓沒有這個問題,移動端彈性滑動體驗(yàn)會更好 this.scrollMode = "touch"; }); }); }, more:function (){ // 分頁查詢 this.searchCondition.pageNo = parseInt(this.searchCondition.pageNo) + 1; this.api.loadPageList(this.searchCondition).then(data=>{ this.pageList = this.pageList.concat(data.result.pageList); this.isHaveMore(data.result.haveMore); }); }, isHaveMore:function(isHaveMore){ // 是否還有下一頁,如果沒有就禁止上拉刷新 this.allLoaded = true; //true是禁止上拉加載 if(isHaveMore){ this.allLoaded = false; } } } } </script>
花了點(diǎn)時間整理了下代碼,復(fù)制后改改就能用了,當(dāng)然你要有基本的vue開發(fā)框架,并且有點(diǎn)開發(fā)基礎(chǔ),代碼很簡單,這個插件很好用,效果不錯,加載時的文字什么的可以自己修改,比如增加箭頭什么的,可以看文檔。
PS:有個坑一定要注意就是注釋里說的iPhone里loadmore和-webkit-overflow-scrolling屬性沖突無法上拉問題,還是vue學(xué)的不精,浪費(fèi)了太多時間,引以為戒
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue實(shí)現(xiàn)網(wǎng)絡(luò)圖片瀑布流 + 下拉刷新 + 上拉加載更多(步驟詳解)
- vueScroll實(shí)現(xiàn)移動端下拉刷新、上拉加載
- vue插件mescroll.js實(shí)現(xiàn)移動端上拉加載和下拉刷新
- vue使用better-scroll實(shí)現(xiàn)下拉刷新、上拉加載
- vue移動端下拉刷新和上拉加載的實(shí)現(xiàn)代碼
- vue2.0 移動端實(shí)現(xiàn)下拉刷新和上拉加載更多的示例
- vue.js整合vux中的上拉加載下拉刷新實(shí)例教程
- 解決Vue使用mint-ui loadmore實(shí)現(xiàn)上拉加載與下拉刷新出現(xiàn)一個頁面使用多個上拉加載后沖突問題
- vue.js移動端app之上拉加載以及下拉刷新實(shí)戰(zhàn)
- 基于vue封裝下拉刷新上拉加載組件
相關(guān)文章
vue本地打開build后生成的dist文件夾index.html問題
這篇文章主要介紹了vue本地打開build后生成的dist文件夾index.html問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧2019-09-09Vue Element校驗(yàn)validate的實(shí)例
這篇文章主要介紹了Vue Element校驗(yàn)validate的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Vue在chrome44偶現(xiàn)點(diǎn)擊子元素事件無法冒泡的解決方法
這篇文章主要給大家介紹了關(guān)于Vue在chrome44偶現(xiàn)點(diǎn)擊子元素事件無法冒泡的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12詳解基于 Nuxt 的 Vue.js 服務(wù)端渲染實(shí)踐
這篇文章主要介紹了詳解基于 Nuxt 的 Vue.js 服務(wù)端渲染實(shí)踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10vue實(shí)現(xiàn)登錄后頁面跳轉(zhuǎn)到之前頁面
本文給大家分享了vue實(shí)現(xiàn)登錄后頁面跳轉(zhuǎn)到之前頁面的一個功能,有這方便需要的朋友學(xué)習(xí)參考下吧。2018-01-01Vue使用vux-ui自定義表單驗(yàn)證遇到的問題及解決方法
這篇文章主要介紹了Vue使用vux-ui自定義表單驗(yàn)證遇到的問題及解決方法,需要的朋友可以參考下2018-05-05vue之字符串、數(shù)組之間的相互轉(zhuǎn)換方式
這篇文章主要介紹了vue之字符串、數(shù)組之間的相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07