<script src="../node_modules/vue-infinite-scroll/vue-infinite-scroll.js"></script>
<div class="myScroll" v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10"> <ul> <li>aaaaaa</li> <li>bbbbbbbb</li> <li>vvvvvvvvv</li> </ul> </div>
loadMore(){ this.busy = true; this.pageSize++; axios({ //請求數據 }) this.busy = false; }
.myScroll { max-height: 600px; overflow-y: auto; }
這是一個比較常用的模式,但是細節東西可能讓人會摸不着頭腦。首先,要讓loadMore事件觸發,.myScroll必須設置高度以及溢出滾動。busy的初始值為false,上拉加載就好了。
上面是正常使用的情況,下面我們說下常見的坑:
1.上拉沒反應
解決:
①要填充數據的盒必須設置高度、溢出滾動(overflow-y : auto),才會觸發loadMore事件。
②發送請求之前,將無線滾動禁掉this.busy = true,數據請求之后,無線滾動設置為false。
2.頁面沒有任何操作,不斷發送請求進行加載
解決:
數據請求完成之后,this.busy = false放在ajax請求外面;這樣可以避免,當請求數據為0時,不斷重復加載。