所遇問題:dom
該頁面爲雙選項卡聯動,四個部分都須要上拉加載和下拉刷新功能,使用的mint-ui的loadmore插件,分別加上上拉加載後,只有最後一個的this.$refs.loadmore.onTopLoaded();和this.$refs.loadmore.onBottomLoaded();ui
有效,其餘的三個都無效,這兩句話是意思是查詢完要調用一次,用於從新定位 this
分析緣由:插件
首先這四個模塊都是用的blog
<mt-loadmore :top-method="loadTop"索引
:bottom-method="loadBottom"接口
:bottom-all-loaded="allLoaded"事件
ref="loadmore">input
<ul class="ul-box">it
<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修改成不一樣的參數,問題解決,
文章來源於 竹生雲野處