【VUE】el-table表格 實現滾動到底部加載更多數據

廢話不多說,直接上代碼

<template></template>部分代碼

<!-- 表格 -->
<el-tableid="mytable"v-loading="listLoading"highlight-current-rowrow-key="project_id":data="tableData"border:reload="reload"ref="myTable"style="width: 100%"show-summary:summary-method="getSummaries1":span-method="arraySpanMethod"height="calc(100vh - 275px)":load-more-disabled="disabledLoad"
><el-table-columntype="index"label="序號":row-style="rowstyles"align="center":fixed="true"width="50"/><el-table-columnlabel="項目名稱"prop="project_name":show-overflow-tooltip="true"align="left":fixed="true"width="400"><template slot-scope="{ row }"><span>{{ row.project_name }}</span></template></el-table-column><el-table-columnlabel="項目進度及百分比"prop="progress_percentage"align="center"width="180":show-overflow-tooltip="true"><template slot-scope="{ row }"><el-selectv-if="LockStatus == 0 && row.is_my_project == 1"v-model.lazy="row.progress_percentage"style="width: 175px"><el-option label="招標階段10%" value="招標階段10%"></el-option><el-option label="合同簽訂并開工50%" value="合同簽訂并開工50%"></el-option><el-option label="轉運維100%" value="轉運維100%"></el-option></el-select><span v-else>{{ row.progress_percentage }}</span></template></el-table-column><el-table-columnlabel="合同簽訂金額"prop="contract_signing_amount"align="center"width="100":show-overflow-tooltip="true"><template slot-scope="{ row }"><textareav-if="LockStatus == 0 && row.is_my_project == 1"v-model.lazy="row.contract_signing_amount"rows="1"cols="30"style="width: 98px;border: none;resize: none;margin-top: 7px;text-align: center;"class="pass_input"/><span v-else>{{ row.contract_signing_amount }}</span></template></el-table-column><el-table-columnlabel="備注"prop="info"align="center"width="100":show-overflow-tooltip="true"><template slot-scope="{ row }"><textareav-if="LockStatus == 0 && row.is_my_project == 1"v-model.lazy="row.info"rows="1"style="width: 98px;border: none;resize: none;margin-top: 7px;text-align: center;"class="pass_input"/><span v-else>{{ row.info }}</span></template></el-table-column><el-table-columnfixed="right":label="'操作'"align="center"width="100"><template #default="{ row }"><divclass="table-btn-box"v-if="LockStatus == 0 && row.is_my_project == 1"><el-button type="primary" @click="submitRow(row)">提交</el-button></div></template></el-table-column><divv-if="tableData.length >= 50"slot="append"style="margin-top: 10px;margin-bottom: 10px;text-align: center;font-size: 15px;">{{ content }}</div>
</el-table>

其他部分的代碼

data() {return {listLoading: false, // Loading狀態tableData: [], // 表格展示數據allData: [], // 接口返回的所有表格數據currentPage: 1, // 第幾頁pageSize: 50, // 每頁展示多少條reload: 0,}
},
mounted() {// 表格添加滾動事件this.$refs.myTable.bodyWrapper.addEventListener('scroll', this.handleScroll)
},
beforeDestroy() {// 銷毀滾動事件this.$refs.myTable.bodyWrapper.removeEventListener('scroll', this.handleScroll)
},
watch: {allData: {deep: true,immediate: true,handler(newValue) {const currentPage = this.currentPage || 1const total = currentPage * this.pageSizethis.tableData = newValue.slice(0, total)}},// 強制刷新變量reload() {this.total = this.allData.lengththis.currentPage = 0this.$refs.myTable.bodyWrapper.scrollTop = 0this.fetchData()this.loop()}
},
methods: {// 滾動加載下一頁,將下一頁數據和之前數據進行累加handleScroll(event) {const { scrollTop, scrollHeight, clientHeight } = event.targetif (Math.ceil(scrollTop) + clientHeight >= scrollHeight) {// 如果數據已全部加載,則跳出if (this.tableData.length == this.total) {return}this.fetchData()}},fetchData() {this.currentPage += 1const start = (this.currentPage - 1) * this.pageSizeconst end = start + this.pageSizeconst newData = this.allData.slice(start, end)this.tableData =this.currentPage == 1 ? newData : this.tableData.concat(newData)},// 如果滾動高度小于可視范圍高度,則繼續加載下一頁,直至可視區域填充滿loop() {this.$nextTick(() => {const { scrollHeight, clientHeight } = this.$refs.myTable.bodyWrapperif (scrollHeight && clientHeight && scrollHeight <= clientHeight) {if (this.tableData.length == this.total) {return         }this.fetchData()this.loop()}})},
},

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23600.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java中的三種拷貝方法

在Java編程中&#xff0c;理解深拷貝&#xff08;Deep Copy&#xff09;、淺拷貝&#xff08;Shallow Copy&#xff09;和引用拷貝&#xff08;Reference Copy&#xff09;是非常重要的。這三種拷貝方式涉及對象復制和內存管理。以下是對它們的詳細解釋&#xff1a; 1. 引用拷…

數字IC后端物理驗證PV | TSMC 12nm Calibre Base Layer DRC案例解析

基于TSMC 12nm ARM A55 upf flow后端設計實現訓練營將于6月中旬正式開班&#xff01;小班教學&#xff01;目前還有3個名額&#xff0c;招滿為止&#xff01;有需要可以私信小編 ic-backend2018報名。吾愛IC社區所有訓練營課程均為直播課&#xff01; 這個課程支持升級成雙核A…

服務器禁止密碼登陸

轉載請標明出處&#xff1a;https://blog.csdn.net/donkor_/article/details/139444224 文章目錄 一、前言二、編輯sshd_config文件三、重啟服務四、總結 一、前言 復雜的密碼&#xff0c;登陸服務器的時候&#xff0c;也是很不方便的。并且頻繁登陸&#xff0c;暴露給外界&am…

事件總線vueEvent

一個組件結束后要更新另一個組件數據&#xff0c;但是另一個組件和這個組件沒有上下級關系 在 Vue 中&#xff0c;非父子組件之間進行通信通常需要使用事件總線或者其他的全局事件管理器。在你的代碼片段中&#xff0c;vueEvent 似乎是一個事件總線對象&#xff0c;通過 emit 方…

c++ 里函數選擇的優先級:普通函數、模板函數、萬能引用,編譯器選擇哪個執行呢?

看大師寫的代碼時&#xff0c;除了在類里定義了 copy 構造函數&#xff0c;移動構造函數&#xff0c;還定義了對形參采取萬能引用的構造函數&#xff0c;因此有個疑問&#xff0c;這時候的構造函數優先級是什么樣的呢&#xff1f;簡化邏輯測試一下&#xff0c;如下圖&#xff0…

如何實現JavaScript中的寄生組合式繼承?

在JavaScript中&#xff0c;寄生組合式繼承是一種繼承機制&#xff0c;它結合了寄生式繼承和組合繼承的特點。其核心思想是通過構造函數來繼承屬性&#xff0c;同時通過原型鏈來繼承方法。以下是實現寄生組合式繼承的基本步驟&#xff1a; 首先定義一個輔助函數 inheritProtot…

Pygame:新手指南與入門教程

在游戲開發領域,pygame 是一個廣受歡迎的 Python 庫,它提供了開發二維游戲的豐富工具和方法。這個庫讓開發者可以較少地關注底層圖形處理細節,更多地專注于游戲邏輯和玩法的實現。本文將詳細介紹 pygame,包括其安裝過程、基本概念、主要功能和一個簡單游戲的開發流程。 一…

【Vue】路由的封裝抽離

問題&#xff1a;所有的路由配置都在main.js中合適嗎&#xff1f; 目標&#xff1a;將路由模塊抽離出來。 好處&#xff1a;拆分模塊&#xff0c;利于維護 路徑簡寫&#xff1a; 腳手架環境下 指代src目錄&#xff0c;可以用于快速引入組件 完整代碼 router/index.js // 但…

探索貸款交易平臺的技術架構與創新應用

隨著金融科技的快速發展&#xff0c;貸款交易平臺作為金融行業的重要組成部分&#xff0c;正扮演著越來越重要的角色。本文將深入探討貸款交易平臺的技術架構和創新應用&#xff0c;從前端設計、后端系統、安全保障和智能化服務等方面進行全面解析&#xff0c;幫助讀者更好地了…

【Python報錯】已解決AttributeError: list object has no attribute ’shape‘ ( Solved )

解決Python報錯&#xff1a;AttributeError: ‘list’ object has no attribute ‘shape’ (Solved) 在Python中&#xff0c;AttributeError表明你試圖訪問的對象沒有你請求的屬性或方法。如果你遇到了AttributeError: list object has no attribute shape的錯誤&#xff0c;這…

為什么要用Git

1. Git是什么 1.1. 概述 Git是分布式版本控制系統&#xff0c;與SVN類似的集中化版本控制系統相比&#xff0c;集中化版本控制系統如果中央服務器宕機則會影響數據和協同開發。 Git是分布式的版本控制系統&#xff0c;客戶端不只是提取最新版本的快照&#xff0c;而且將整個…

【Java畢業設計】基于Java的特色美食推薦網站的設計與實現

文章目錄 摘 要ABSTRACT目 錄1 概述1.1 研究背景及意義1.2 國內外研究現狀1.3 擬研究內容1.4 系統開發技術1.4.1 Java編程語言1.4.2 SpringBoot框架1.4.3 MySQL數據庫1.4.4 B/S結構1.4.5 MVC模式 2 系統需求分析2.1 可行性分析2.2 任務概述2.3 功能性需求3.2.2 數據庫邏輯結構設…

全面解析如何租用免備案海外服務器

租用免備案海外服務器是許多企業和個人在全球范圍內開展業務或訪問國際互聯網資源時選擇的一種方式。這種服務具有無需經過中國互聯網備案流程的優勢&#xff0c;能夠快速部署并使用。下面將詳細介紹免備案海外服務器租用的相關信息&#xff0c;rak部落為您整理發布。 1. **國外…

外匯天眼:FSCS確認TenetConnect Services Ltd已任命管理人

2024年6月5日&#xff0c;Tenet Group Ltd的董事們任命了Interpath Ltd的Ed Boyle、Howard Smith和Rob Spence為聯合管理人。Ed Boyle和Rob Spence也被任命為其子公司Tenet Ltd、TenetConnect Ltd和TenetConnect Services Ltd的聯合管理人。Tenet Mortgage Services Ltd和Tenet…

【計算機視覺(8)】

基于Python的OpenCV基礎入門——圖像直方圖 直方圖圖像直方圖 圖像直方圖代碼以及實現效果 直方圖 直方圖是一種用于描述圖像亮度分布的統計工具。它將圖像的像素亮度值按照不同的亮度等級進行計數&#xff0c;并以直方圖的形式呈現出來。圖像直方圖可以顯示圖像中每個亮度級別…

點擊式的excel電子表格查找修改功能,比xlookup和vlookup簡單,多列關聯查詢速度更快

經過實際測試&#xff0c;excel的xlookup確實非常簡單&#xff0c;有部分功能也非常快。但是有的人不會公式&#xff0c;或者不喜歡用公式&#xff0c;或者沒有excel2021以上的版本。而且xlookup確實也有些還不是很完美的地方&#xff0c;比如對多列關聯查詢很慢。所以我們還是…

MVC前端怎么寫:深入解析與實戰指南

MVC前端怎么寫&#xff1a;深入解析與實戰指南 在Web開發領域&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;是一種廣泛使用的架構模式&#xff0c;它將應用程序的數據、界面和控制邏輯分離&#xff0c;使得代碼更加清晰、易于維護。本文將詳細探討MVC前端如何…

selenium非全新的方式同時啟動多個瀏覽器又互不影響的一種實現方法,歡迎討論!

最近在做模擬瀏覽器批量定時自動點擊實現批量操作功能&#xff0c;主要使用selenium&#xff0c;但是發現selenium直接調用本地瀏覽器&#xff0c;啟動的是一個全新的&#xff08;與手動打開的不一致&#xff09;&#xff0c;網站可以檢測到&#xff0c;每次都要雙重驗證(密碼登…

Windows系統中不同Java版本共存

Windows系統中不同Java版本共存的方法 在Windows系統中&#xff0c;有時我們需要同時運行多個Java應用&#xff0c;而這些應用可能依賴于不同版本的Java Development Kit (JDK) 或 Java Runtime Environment (JRE)。為了實現這種需求&#xff0c;我們需要在Windows中配置多個J…

我應該如何使用 Python 的 NLTK 庫進行詞頻統計?

使用Python的NLTK&#xff08;Natural Language Toolkit&#xff09;庫進行詞頻統計&#xff0c;你可以遵循以下步驟&#xff1a; 安裝NLTK庫&#xff1a; 如果你還沒有安裝NLTK&#xff0c;可以通過pip安裝&#xff1a; pip install nltk導入必要的模塊&#xff1a; 在Python腳…