vue使用elementUI組件實(shí)現(xiàn)分頁(yè)效果
分頁(yè)的兩種方式。前端分頁(yè),后端分頁(yè)
前端分頁(yè):后臺(tái)只需將數(shù)據(jù)返回,不需要做過(guò)多處理,前端一次請(qǐng)求拿到所有數(shù)據(jù)后做分頁(yè)處理。但數(shù)據(jù)量不能太大,因?yàn)榍岸耸窍纫淮涡约虞d所有數(shù)據(jù),然后在做分頁(yè)處理。在數(shù)據(jù)量多的情況下,加載相對(duì)應(yīng)的會(huì)變慢。所有在前端做分頁(yè)時(shí)要先考慮一下后期的數(shù)據(jù)量。
后端分頁(yè):因?yàn)槭呛蠖朔猪?yè),前端在每點(diǎn)擊一次分頁(yè)時(shí),便向后臺(tái)請(qǐng)求一次數(shù)據(jù)。其實(shí)就是避免前端一次性從數(shù)據(jù)庫(kù)獲取大量數(shù)據(jù)
一、在elementUI中將表格、分頁(yè)引入自己的頁(yè)面中
<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 弄'
}],
// 默認(rèn)顯示第一條
currentPage:1
}
},
methods: {
handleSizeChange(val) {
console.log(`每頁(yè) ${val} 條`);
},
handleCurrentChange(val) {
console.log(`當(dāng)前頁(yè): ${val}`);
}
},
}
</script>
二、分頁(yè)部分
- 前端分頁(yè)
<template>
<div class="app">
<!-- 將獲取到的數(shù)據(jù)進(jìn)行計(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:[],
// 默認(rèn)顯示第幾頁(yè)
currentPage:1,
// 總條數(shù),根據(jù)接口獲取數(shù)據(jù)長(zhǎng)度(注意:這里不能為空)
totalCount:1,
// 個(gè)數(shù)選擇器(可修改)
pageSizes:[1,2,3,4],
// 默認(rèn)每頁(yè)顯示的條數(shù)(可修改)
PageSize:1,
}
},
methods:{
getData(){
// 這里使用axios,使用時(shí)請(qǐng)?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ù)的長(zhǎng)度賦值給totalCount
this.totalCount=data.data.body.length
})
},
// 分頁(yè)
// 每頁(yè)顯示的條數(shù)
handleSizeChange(val) {
// 改變每頁(yè)顯示的條數(shù)
this.PageSize=val
// 注意:在改變每頁(yè)顯示的條數(shù)時(shí),要將頁(yè)碼顯示到第一頁(yè)
this.currentPage=1
},
// 顯示第幾頁(yè)
handleCurrentChange(val) {
// 改變默認(rèn)的頁(yè)數(shù)
this.currentPage=val
},
},
created:function(){
this.getData()
}
}
</script>
- 后端分頁(yè)
<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:[],
// 默認(rèn)顯示第幾頁(yè)
currentPage:1,
// 總條數(shù),根據(jù)接口獲取數(shù)據(jù)長(zhǎng)度(注意:這里不能為空)
totalCount:1,
// 個(gè)數(shù)選擇器(可修改)
pageSizes:[1,2,3,4],
// 默認(rèn)每頁(yè)顯示的條數(shù)(可修改)
PageSize:1,
}
},
methods:{
// 將頁(yè)碼,及每頁(yè)顯示的條數(shù)以參數(shù)傳遞提交給后臺(tái)
getData(n1,n2){
// 這里使用axios,使用時(shí)請(qǐng)?zhí)崆耙?
axios.post(url,{
orgCode:1,
// 每頁(yè)顯示的條數(shù)
PageSize:n1,
// 顯示第幾頁(yè)
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ù)的長(zhǎng)度賦值給totalCount
this.totalCount=data.data.body.length
})
},
// 分頁(yè)
// 每頁(yè)顯示的條數(shù)
handleSizeChange(val) {
// 改變每頁(yè)顯示的條數(shù)
this.PageSize=val
// 點(diǎn)擊每頁(yè)顯示的條數(shù)時(shí),顯示第一頁(yè)
this.getData(val,1)
// 注意:在改變每頁(yè)顯示的條數(shù)時(shí),要將頁(yè)碼顯示到第一頁(yè)
this.currentPage=1
},
// 顯示第幾頁(yè)
handleCurrentChange(val) {
// 改變默認(rèn)的頁(yè)數(shù)
this.currentPage=val
// 切換頁(yè)碼時(shí),要獲取每頁(yè)顯示的條數(shù)
this.getData(this.PageSize,(val)*(this.pageSize))
},
},
created:function(){
this.getData(this.PageSize,this.currentPage)
}
}
</script>
到此這篇關(guān)于vue使用elementUI組件實(shí)現(xiàn)分頁(yè)效果的文章就介紹到這了,更多相關(guān)vue elementUI分頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue使用elementUI分頁(yè)如何實(shí)現(xiàn)切換頁(yè)面時(shí)返回頁(yè)面頂部
- Vue+ElementUI?實(shí)現(xiàn)分頁(yè)功能-mysql數(shù)據(jù)
- Vue2.0+ElementUI+PageHelper實(shí)現(xiàn)的表格分頁(yè)功能
- Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格列表分頁(yè)效果
- Vue中ElementUI分頁(yè)組件Pagination的使用方法
- 詳解vue修改elementUI的分頁(yè)組件視圖沒(méi)更新問(wèn)題
- vue+elementUI組件table實(shí)現(xiàn)前端分頁(yè)功能
- vue+elementui 表格分頁(yè)限制最大頁(yè)碼數(shù)的操作代碼
相關(guān)文章
Vue3.2?新增指令?v-memo?用法詳解(提高性能利器)
v-memo 接受一個(gè)依賴(lài)的數(shù)組,依賴(lài)的數(shù)組變化,v-memo 所對(duì)應(yīng)的 DOM 包括子集將會(huì)重新渲染,這篇文章主要介紹了Vue3.2?新增指令?v-memo?用法,提高性能的又一利器,需要的朋友可以參考下2022-09-09
詳解Electron中如何使用SQLite存儲(chǔ)筆記
這篇文章主要為大家介紹了Electron中如何使用SQLite存儲(chǔ)筆記示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
ant design vue中日期選擇框混合時(shí)間選擇器的用法說(shuō)明
這篇文章主要介紹了ant design vue中日期選擇框混合時(shí)間選擇器的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
vue組件實(shí)現(xiàn)移動(dòng)端九宮格轉(zhuǎn)盤(pán)抽獎(jiǎng)
這篇文章主要為大家詳細(xì)介紹了vue組件實(shí)現(xiàn)移動(dòng)端九宮格轉(zhuǎn)盤(pán)抽獎(jiǎng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
Vue中Pinia的各種詳細(xì)說(shuō)明和使用示例
Pinia是Vue 3的專(zhuān)屬狀態(tài)管理庫(kù),旨在替代Vuex,提供更簡(jiǎn)單、直觀的狀態(tài)管理解決方案,它支持組合式API和選項(xiàng)式API,允許跨組件或頁(yè)面共享狀態(tài),避免了Vuex中的許多復(fù)雜概念,本文介紹Vue中Pinia的各種詳細(xì)說(shuō)明和使用示例,感興趣的朋友一起看看吧2025-01-01
vue.js頁(yè)面加載執(zhí)行created,mounted的先后順序說(shuō)明
這篇文章主要介紹了vue.js頁(yè)面加載執(zhí)行created,mounted的先后順序說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Vue3中使用監(jiān)聽(tīng)器的具體實(shí)踐
監(jiān)聽(tīng)器是Vue3中非常好用的一個(gè)特性,用于監(jiān)聽(tīng)某個(gè)響應(yīng)式變量的變化,本文就來(lái)介紹一下Vue3中使用監(jiān)聽(tīng)器的具體實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12

