基於element組件開發,頁面上表格分頁一般是根據后台數據分頁,即每次分頁都要請求接口,現在的需求是,前端分頁,不請求接口,可用以下方法實現:
html中:
el-table中,data這樣寫:
:data="bomDataList.slice((currentPage-1)*pagesize,currentPage*pagesize)"
分頁:
<el-pagination background layout="prev, pager, next" :total="total" @current-change="current_change" </el-pagination>
js中:
定義變量:
total:0,//默認數據總數
pagesize:10,//每頁的數據條數
currentPage:1,//默認開始頁面
分頁方法:
current_change:function(currentPage){
this.currentPage = currentPage;
},
這樣就可以實現頁面分頁功能,如果只是想實現分頁展示數據,這樣寫沒問題。但是如果要對分頁數據進行操作,比如多選、刪除等等,這樣寫就會有問題,所有操作引用的數據變量(即上文中bomDataList都沒有真的分頁),會導致全選后點擊彈窗后,全選消失,或者點第二頁操作失效等問題,解決方式如下:
用computed計算屬性解決
//將計算的分頁數據緩存起來
computed: {
databox() {
return this.arrAuditData.slice(
(this.currentPage - 1) * this.pagesize,
this.currentPage * this.pagesize
);
}
},
此時el-table中data寫成:
:data="databox"
執行每行數據操作時(所有對每條數據操作時都要注意)
getDetailData(val){
獲取下標的計算方式,否則取得只是分頁后的下標
this.rowIndex = parseInt(val.index) + (this.currentPage - 1) * this.pagesize;
}
這樣就可以解決分頁后操作數據失效問題了。
但是需要注意一個問題,
方法中用=號賦值時不會更新computed里的屬性,導致頁面不能實時刷新,所以用$set刷新;