所遇問題:
該頁面為雙選項卡聯動,四個部分都需要上拉加載和下拉刷新功能,使用的mint-ui的loadmore插件,分別加上上拉加載后,只有最后一個的this.$refs.loadmore.onTopLoaded();
和this.$refs.loadmore.onBottomLoaded();
有效,其他的三個都無效,這兩句話是意思是查詢完要調用一次,用于重新定位
分析原因:
首先這四個模塊都是用的
<mt-loadmore :top-method="loadTop" :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" ref="loadmore"> <ul class="ul-box"> <li class="list-cell ta-line" v-for="(item,index) in gridNoPayMail" :key="item+'walletdetail1'" @click="choose(index)"> <div class="checkboxOne"> <input type="checkbox" name="checkInput" :id="'id1' + index" v-model="item.checked" disabled/> <label :for="'id1' + index"></label> </div> <div class="left-text"> <p class="award">{{item.a}}</p> <p class="time">{{item.b}}</p> </div> <div class="right-text"> <p class="addinfo">¥{{item.c}}</p> </div> </li> </ul> </mt-loadmore>
top-method和bottom-method,bottom-all-loaded分別賦予不同的事件名,前兩個事件分別表示下拉,上拉,第三個若為真,則 bottomMethod 不會被再次觸發,一般進入頁面我們默認為false
調用接口成功后進行的取消加載的判斷,這里可以給接口的方法一個type值,如果type為top1時則證明正在進行的是下拉刷新執行this.$refs.loadmore1.onTopLoaded();
,上拉加載同理,其他三個模塊同理
if(type=='top1'){ this.$refs.loadmore1.onTopLoaded(); }else if(type=='bottom1'){ this.$refs.loadmore1.onBottomLoaded(); }
到了這里就會出現開始所描述問題,
解決方法
一開始做了很多嘗試,比如利用v-if當一個模塊顯示時讓其他三個隱藏,總是會出現不同的問題,后來將ref="loadmore"中ref后的參數在四個模塊中做了區分比如分別為loadmore1,loadmore2……,這里我是這樣理解的,ref 在此的作用為子組件指定一個索引 ID,類似于dom元素的id,id名不能相同,所以我們將ref修改為不同的參數,問題解決,
附Vue官網鏈接https://vuejs.org/
mint-ui:https://mint-ui.github.io/docs/#/en2/loadmore
PS:mint-ui loadmore組件注意問題
loadTop(){ this.$store.dispatch('getNewsList',{channelId:this.id,page:0,size:this.size}); this.$refs.loadmore.onTopLoaded(); },
比如在做下拉刷新的時候,切記在下拉刷新的函數中要加
this.$refs.loadmore.onTopLoaded();
這行代碼,否則下拉加載之后一直顯示加載中,而不會加載完成。
總結
以上所述是小編給大家介紹的Vue使用mint-ui loadmore實現上拉加載與下拉刷新出現一個頁面使用多個上拉加載后沖突問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。