Vue-上拉加載與下拉刷新(mint-ui:loadmore)一個頁面使用多個上拉加載后沖突問題


所遇問題:

該頁面為雙選項卡聯動,四個部分都需要上拉加載和下拉刷新功能,使用的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

以上所述有不嚴謹之處歡迎指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM