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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 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)文章
vue播放flv、m3u8視頻流(監(jiān)控)的方法實例
隨著前端大屏頁面的逐漸壯大,客戶的...其中實時播放監(jiān)控的需求逐步增加,視頻流格式也是有很多種,用到最多的.flv、.m3u8,下面這篇文章主要給大家介紹了關(guān)于vue播放flv、m3u8視頻流(監(jiān)控)的相關(guān)資料,需要的朋友可以參考下2023-04-04
vue-cli5.0?webpack?采用?copy-webpack-plugin?打包復(fù)制文件的方法
今天就好好說說vue-cli5.0種使用copy-webpack-plugin插件該如何配置的問題。這里我們安裝的 copy-webpack-plugin 的版本是 ^11.0.0,感興趣的朋友一起看看吧2022-06-06
element el-tooltip動態(tài)顯示隱藏(有省略號顯示,沒有省略號不顯示)
本文主要介紹了element el-tooltip動態(tài)顯示隱藏,主要實現(xiàn)有省略號顯示,沒有省略號不顯示,具有一定的參考價值,感興趣的可以了解一下2023-09-09
VUE+ElementUI下載文件的幾種方式(小結(jié))
本文主要介紹了VUE+ElementUI下載文件的幾種方式(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Vue二次封裝el-select實現(xiàn)下拉滾動加載效果(el-select無限滾動)
el-select默認是不支持虛擬滾動的,需要使用第三方插件來實現(xiàn)虛擬滾動功能,下面這篇文章主要給大家介紹了關(guān)于Vue二次封裝el-select實現(xiàn)下拉滾動加載效果的相關(guān)資料,需要的朋友可以參考下2024-04-04
element-plus中如何實現(xiàn)按需導(dǎo)入與全局導(dǎo)入
本文主要介紹了element-plus中如何實現(xiàn)按需導(dǎo)入與全局導(dǎo)入,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11

