H5中加載更多的邏輯總結:
1、首先,需要三個底部的提示,分別是“加載中”、“--我是有底線的--”、“暫時沒有記錄”,當然,這三句話根據不同的項目,可以自定義。具體代碼例子如下:
<div class="nowStartLoading" v-if="nowloading"> <mt-spinner type="fading-circle" :size="25"></mt-spinner> <span>加載中···</span> </div> <div class="bottomWord" v-if="noData">--我是有底線的--</div> <div class="bottomWord" v-if="firstNoData">暫時沒有推薦記錄~</div>
2、根據如上情況,我們需要定義如下幾個變量,來進行相應的操作。具體變量及說明如下:
ifHasMoreData: true, //是否有更多數據
nowloading: false, //正在加載的動畫
noData: false, //非第一次加載沒有數據
firstNoData: false //第一次加載就沒有數據
3、加載具體數據的函數處
that.nowloading = false; // 默認請求完數據,都關閉加載動畫。 當然,打開動畫是在加載更多的函數地方打開動畫。
if (res.data.length == 0 && that.page == 1) { //如果是第一頁,並且數據為空 that.ifHasMoreData = false; that.noData = false; that.firstNoData = true; } else if (res.data.length >= 0 && res.data.length < 10) { // 如果是數據大於等於0,並且加載數據小於我們請求的每頁的數據,則該push,同時我們判斷,此時數據加載完了 that.recommendList = that.recommendList.concat(res.data); that.ifHasMoreData = false; that.noData = true; that.firstNoData = false; } else if (res.data.length == 10) { // 如果是加載數據還是后台返回的加載數據條數,則我們認為還有數據 that.recommendList = that.recommendList.concat(res.data); that.ifHasMoreData = true; that.noData = false; that.firstNoData = false; }
4、加載更多頁面的函數處
loadMore() { console.log("執行加載更多"); let that = this; if (that.ifHasMoreData) { //如果有更多數據 that.nowloading = true; //打開加載動畫 that.page = ++that.page; // 頁數加1 that.getRecruitList(); //執行加載數據的函數。 } },