最近在用element,用到了它的分頁這個組件,我這邊的情況是,我前端請求數據,數據大概有20個的樣子,把數據存在data的一個數組里面,用一個v-for循環遍歷數組內容,並用div裝起來,這樣20個數據就從上往下排列了出來,但是我想使用分頁,一個分頁只顯示5個數據,那么就有4頁,這個效果怎么做到呢?
我本人也是思考了一下,主要用到里面的兩個屬性一個方法,屬性是
:page-size="5"
:total="sites[0].allPages">
sites是后台返回的json數據,且后台在數組下標為0返回的是我的一個總長度,也就是20,我這邊循環是用了數組的一個slice方法讓其從1開始循環,element會自動根據你的size和total生成總的
頁數,先貼我的代碼
handleCurrentChange(val) {
var that =this;
$.ajax({
url: 'http://113.250.159.232:8081/Title/PrePages',
type: 'post',
contentType:'application/json;charset=UTF-8',
dataType: 'json',
data:JSON.stringify(val),
success: function (data) {
var json =data;
that.sites=json;
that.number=val;
},
error: function (data) {
console.log(data);
}
});
},
這里這個方法是當你頁數變化時,也就是你點1,2,3,4頁時執行的函數,里面的參數val是你當前點擊哪個頁數的數字,我的思路是我在頁數變化時發送一個ajax給后台,並把val值傳給后台
后台根據val值判斷傳回來的數據是哪些,但是一個bug出來了,就是這個函數是必須你點擊頁面角標變化時才執行,也就是我一開始頁面加載完后我什么都看不到,但是我點到第二頁后,數據便出來了,這個時候可以在mounted函數中一個ajax請求,並傳一個數字1,因為點到第二頁才生效,第一頁相當於后台沒有得到傳過去的數據,所以沒做處理,因為我在頁面加載完后自動是第一頁,那么我把1傳給后台,后台再響應並傳回原本屬於1的數據,這樣就完成了。但是性能方面還沒有考慮,需要在后面測試的時候才知道,這也只是我本人的一個思路,希望有更好的辦法的同學多多幫幫我呀哈哈哈