拿vue做示例
首先定義data
data() { return { tableData: [], // 當前頁的數據,用於給表格展示用的 tableDataAll: [], // 需要拿來分頁的總數據 pagination: { totalRows: 0, //總條數 pageSize: 10, //每頁顯示條數 pageNumber: 1 } } }
定義methods
methods: { currentChange(val) { //頁碼改變 this.pagination.pageNumber = val; this.dataPagination(this.tableDataAll); }, sizeChange(val) { //切換每頁顯示條數 this.pagination.pageSize = val; this.dataPagination(this.tableDataAll); }, // 數據分頁 dataPagination(dataList) { if (!dataList || dataList.length <=0) { dataList = []; this.tableData = []; } if (dataList.length <= this.maxUsePage) { this.tableData = dataList; return; } let pageNo = this.pagination.pageNumber; let pageSize = this.pagination.pageSize; var offset = (pageNo - 1) * pageSize; this.pagination.totalRows = dataList.length; this.tableData = (offset + pageSize >= dataList.length) ? dataList.slice(offset, dataList.length) : dataList.slice(offset, offset + pageSize); } }, mounted: function() { this.$nextTick(function () { // 初始化渲染 this.pagination.pageNumber = 1 // 得到總數據tableDataAll進行分頁 this.dataPagination(this.tableDataAll); }) }