Vue+ElementUI table實現(xiàn)表格分頁
Vue+ElementUI table表格分頁,供大家參考,具體內(nèi)容如下
分頁的兩種方式。前端分頁,后端分頁。兩種方式各有個的優(yōu)缺點吧。
前端分頁:后臺只需將數(shù)據(jù)返回,不需要做過多處理,前端一次請求拿到所有數(shù)據(jù)后做分頁處理。但數(shù)據(jù)量不能太大,因為前端是先一次性加載所有數(shù)據(jù),然后在做分頁處理。在數(shù)據(jù)量多的情況下,加載相對應(yīng)的會變慢。所有在前端做分頁時要先考慮一下后期的數(shù)據(jù)量。
后端分頁:因為是后端分頁,前端在每點擊一次分頁時,便向后臺請求一次數(shù)據(jù)。其實就是避免前端一次性從數(shù)據(jù)庫獲取大量數(shù)據(jù)
一、在elementUI中將表格、分頁引入自己的頁面中
<template> <div class="app"> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"></el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[100, 200, 300, 400]" :page-size="100" layout="total, sizes, prev, pager, next, jumper" :total="400"> </el-pagination> </div> </template> <script> export default { data() { return { tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀區(qū)金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀區(qū)金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀區(qū)金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀區(qū)金沙江路 1516 弄' }], // 默認顯示第一條 currentPage:1 } }, methods: { handleSizeChange(val) { console.log(`每頁 ${val} 條`); }, handleCurrentChange(val) { console.log(`當前頁: ${val}`); } }, } </script>
二、前端分頁(在一的基礎(chǔ)上添加分頁功能)
<template> <div class="app"> <!-- 將獲取到的數(shù)據(jù)進行計算 --> <el-table :data="tableData.slice((currentPage-1)*PageSize,currentPage*PageSize)" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"></el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> <div class="tabListPage"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="pageSizes" :page-size="PageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </el-pagination> </div> </div> </template> <script> export default { data(){ return { // 總數(shù)據(jù) tableData:[], // 默認顯示第幾頁 currentPage:1, // 總條數(shù),根據(jù)接口獲取數(shù)據(jù)長度(注意:這里不能為空) totalCount:1, // 個數(shù)選擇器(可修改) pageSizes:[1,2,3,4], // 默認每頁顯示的條數(shù)(可修改) PageSize:1, } }, methods:{ getData(){ // 這里使用axios,使用時請?zhí)崆耙? axios.post(url,{ orgCode:1 },{emulateJSON: true}, { headers:{"Content-Type": "application/x-www-form-urlencoded;charset=utf-8",} } ).then(reponse=>{ console.log(reponse) // 將數(shù)據(jù)賦值給tableData this.tableData=data.data.body // 將數(shù)據(jù)的長度賦值給totalCount this.totalCount=data.data.body.length }) }, // 分頁 // 每頁顯示的條數(shù) handleSizeChange(val) { // 改變每頁顯示的條數(shù) this.PageSize=val // 注意:在改變每頁顯示的條數(shù)時,要將頁碼顯示到第一頁 this.currentPage=1 }, // 顯示第幾頁 handleCurrentChange(val) { // 改變默認的頁數(shù) this.currentPage=val }, }, created:function(){ this.getData() } } </script>
三、后端分頁(在一的基礎(chǔ)上添加分頁功能)
<template> <div class="app"> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"></el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> <div class="tabListPage"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="pageSizes" :page-size="PageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </el-pagination> </div> </div> </template> <script> export default { data(){ return { // 總數(shù)據(jù) tableData:[], // 默認顯示第幾頁 currentPage:1, // 總條數(shù),根據(jù)接口獲取數(shù)據(jù)長度(注意:這里不能為空) totalCount:1, // 個數(shù)選擇器(可修改) pageSizes:[1,2,3,4], // 默認每頁顯示的條數(shù)(可修改) PageSize:1, } }, methods:{ // 將頁碼,及每頁顯示的條數(shù)以參數(shù)傳遞提交給后臺 getData(n1,n2){ // 這里使用axios,使用時請?zhí)崆耙? axios.post(url,{ orgCode:1, // 每頁顯示的條數(shù) PageSize:n1, // 顯示第幾頁 currentPage:n2, },{emulateJSON: true}, { headers:{"Content-Type": "application/x-www-form-urlencoded;charset=utf-8",} } ).then(reponse=>{ console.log(reponse) // 將數(shù)據(jù)賦值給tableData this.tableData=data.data.body // 將數(shù)據(jù)的長度賦值給totalCount this.totalCount=data.data.body.length }) }, // 分頁 // 每頁顯示的條數(shù) handleSizeChange(val) { // 改變每頁顯示的條數(shù) this.PageSize=val // 點擊每頁顯示的條數(shù)時,顯示第一頁 this.getData(val,1) // 注意:在改變每頁顯示的條數(shù)時,要將頁碼顯示到第一頁 this.currentPage=1 }, // 顯示第幾頁 handleCurrentChange(val) { // 改變默認的頁數(shù) this.currentPage=val // 切換頁碼時,要獲取每頁顯示的條數(shù) this.getData(this.PageSize,(val)*(this.pageSize)) }, }, created:function(){ this.getData(this.PageSize,this.currentPage) } } </script>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- vue elementUI table表格數(shù)據(jù) 滾動懶加載的實現(xiàn)方法
- Vue+EleMentUI實現(xiàn)el-table-colum表格select下拉框可編輯功能實例
- Vue?ElementUI?table實現(xiàn)表格斜線分隔線
- VUE2.0+ElementUI2.0表格el-table實現(xiàn)表頭擴展el-tooltip
- VUE2.0+ElementUI2.0表格el-table循環(huán)動態(tài)列渲染的寫法詳解
- VUE2.0 ElementUI2.0表格el-table自適應(yīng)高度的實現(xiàn)方法
- vue elementUI table表格自定義樣式滾動效果
相關(guān)文章
基于ElementUI中Table嵌套實現(xiàn)多選的示例代碼
這篇文章主要介紹了基于ElementUI中Table嵌套實現(xiàn)多選的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03Vue中使用ElementUI使用第三方圖標庫iconfont的示例
這篇文章主要介紹了Vue中使用ElementUI使用第三方圖標庫iconfont的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10VUE2.0+Element-UI+Echarts封裝的組件實例
下面小編就為大家分享一篇VUE2.0+Element-UI+Echarts封裝的組件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03vue.js數(shù)據(jù)加載完成前顯示原代碼{{代碼}}問題及解決
這篇文章主要介紹了vue.js數(shù)據(jù)加載完成前顯示原代碼{{代碼}}問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07