不通過后台接口實現前端分頁展示后,對數據操作功能失效


基於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刷新;
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM