擊右上方紅色按鈕關注“web秀”,讓你真正秀起來
作為前端開發,很多時候,后臺給的數據不是我們想要的,遇到好說話的,給你改,遇到那種不好說話的,只能自己動手了。今天就來給大家講講前端如何來模擬分頁,下面注釋很詳細,這里就不做過多的介紹了。
<div id="docList"></div> <div class="more" id="docLoadMore">加載更多</div>
var data={ // 分頁數據 docPages: { pageNo: 1, // 當前頁碼 pageSize: 3 // 一頁多少條數據 }, // 模擬數據 docList: [{ name: '這是我的第1篇文章' },{ name: '這是我的第2篇文章' },{ name: '這是我的第3篇文章' },{ name: '這是我的第4篇文章' },{ name: '這是我的第5篇文章' },{ name: '這是我的第6篇文章' },{ name: '這是我的第7篇文章' },{ name: '這是我的第8篇文章' }] } $('#docLoadMore').on('click',function(){ function getHtml(name) { // html模板 var tpl='<div class="load-li dis-flex clearfix">'+ '<span class="align-left">'+ '<img src="../images/productDetails/yh_product_wendang_icon@2x.png" / class="word-icon">'+ '</span>'+ '<span class="color-66 flex1 li-content fs-01">'+name+'</span>'+ '<span class="align-right">'+ '<img src="../images/productDetails/yh_product_xiazai_icon@2x.png" / class="load-icon">'+ '</span>'+ '</div>'; return tpl; } var pageNo=data.docPages.pageNo; var pageSize=data.docPages.pageSize; // 計算最多分多少頁 // 總條數 / 一頁多少條=可以分多少頁 如果是小數 向上取整(Math.ceil) let maxPage=Math.ceil(data.docList.length / pageSize); // 如果頁面大于總頁數return if (pageNo > maxPage) { console.log('沒有更多了'); return; } // 計算第n頁時取第幾條到第幾條數據 var startIndex=(pageNo-1) * pageSize; // 下標從0開始,所以-1 // 1:(1-1)*2=>0 // 2:(2-1)*2=>2 // 3:(3-1)*2=>4 // 4:(4-1)*2=>6 var endIndex=pageNo * pageSize - 1; // 1: 1*2=>2 // 2: 2*2=>4 // 3: 3*2=>6 data.docPages.pageNo ++; // 根據下標找到對應的頁碼的數據 var newPage=vm.data.docList.slice(startIndex, endIndex+1); let html=''; newPage.map(function(item){ html +=getHtml(item.name); }); // 向元素后面插入準備好的html內容 $('#docList').append(html); })
中間有部分是模板,看的不是很清楚,看下面截圖。
上面代碼沒有初始化第一頁數據,點擊一下才會出來第一頁的數據,所以可以在頁面加載完畢,自動觸發一下點擊事件
$('#docLoadMore').trigger('click');
是不是很簡單了,只要自己動手操作,發現事實都很簡單。
喜歡小編的點擊關注,了解更多知識!
源碼地址請點擊下方“了解更多”
要涉及到數據查詢,通常我們都會進行分頁查詢。
假設你的表中有上百萬條記錄,不分頁的話,我們不可能一次性將所有數據全部都載入到前端吧,那前后端都早就崩潰了。
Spring 和 Vue 都提供了開箱即用的分頁功能。
Spring 主要用來處理后端的分頁查詢,VUE 主要在前端展示頁面和進行下一個頁面的查詢。
有關后端 Spring 如何進行分頁查詢的方法,請參考:Spring Data @Repository 的分頁查詢 中的文章。
如果你配置得當,Spring 會將整個查詢的頁面信息發送給前端。
比如我們說的這一部分,在這部分中,我們會知道總共查詢的記錄有多少,每一頁的大小,一共有多少頁,當前是第幾頁等分頁最重要的信息。
VUE 的前端可以用 Pagination 這個組件 Pagination | Components | BootstrapVue
我們直接在前端調用模板,將參數設置進來就完成了。
代碼可以精簡到只有下面幾句話:
<b-pagination
v-model="pagedData.number"
:total-rows="pagedData.totalElements"
:per-page="pagedData.size"
@click="pageSearch(pagedData.number -1)"
class="pagination pagination-rounded justify-content-end mb-2"
></b-pagination>
不用重復做無用的事情了。
第一個參數是當前的頁面是第幾頁。
第二個參數為一共有多少條記錄。
第三個參數為當前分頁的頁面大小。
第四個參數為,如果頁碼被單擊了,我們會觸發一個什么樣的函數,通常這個函數就是通過 AJAX 的調用到后臺再獲取一次數據。
是不是簡單到令人發指。
如果沒有這個模板的話,我們需要手寫分頁,還要算頁面編碼,真心沒必要。
如果想使用不同的 CSS 的話,在分頁模板中加入自己的 CSS 就可以了。
我們的分頁效果為
頁面看起來還非常干凈喔。
站分頁功能是必不可少的,一般用在列表頁面中,javascript實現分頁效果,效果如下:
實現代碼
html結構:
CSS樣式:
javascript:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。