国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue elementUI table表格數據 滾動懶加載的實現方法

2019-11-19 11:53:49
字體:
來源:轉載
供稿:網友

在項目中遇到了一個性能問題

vue+elementUI table表格展示數據,當數據很多的時候,不能一頁顯示完,同時一次請求數據量太大,會增加網頁渲染的時間,影響體驗,

這個時候常常有兩種方法處理,

1、分頁,如下

 

2、如果我不想分頁,又想在一頁顯示全部數據呢?這個時候其實就可以用數據懶加載了

如下一開始表格只顯示31行數據


當將滾動條拉到低的時候,就會再加載31條數據,如果剩下的數據不足31,那就加載剩下的

 

根據項目需求,這需要一頁可以看到全部數據,所以我選擇了第二中方式

那么第二種方式要怎么去實現呢?

在了解它的原理前,你需要分清楚三個屬性:

scrollHeight:指元素的總高度,包含滾動條中的內容。只讀屬性。不帶px單位。就是下圖中,54條數據的高度,但是因為有滾動條,所以屏幕看不到這么高

scrollTop:當元素出現滾動條時,向下拖動滾動條,內容向上滾動的距離。可讀可寫屬性。不帶px單位。如果該元素沒有滾動條,則scrollTop的值為0,該值只能是正值。就是下圖中紅色框的高度

clientHeight:元素客戶區的大小,指的是元素內容及其邊框所占據的空間大小,實際上就是可視區域的大小。就是下圖紅色箭頭的高度

 

那如何判斷滾動條滾到底部了呢?

scrollHeight-scrollTop-clientHeight=0,這個時候可以就是滾動條滾到底部的時候了。

在第一次請求數據的時候,先設置一個變量來記錄請求次數(其實后臺也是做分頁的處理)

this.currentPage = 1,$this = this;this.$axios.fun().then(res=>{   $this.totalPage = res.totalPage; //這里需要知道總頁數      $this.tableData = res.data;//表格數據})

監聽表格dom對象的滾動事件

let dom = document.querySelector(targetDom);  dom.addEventListener("scroll", function() {    const scrollDistance =dom.scrollHeight - dom.scrollTop - dom.clientHeight;    if(scrollDistance <=0){//等于0證明已經到底,可以請求接口      if($this.currentPage < $this.totalPage){//當前頁數小于總頁數就請求        $this.currentPage++;//當前頁數自增                //請求接口的代碼        $this.$axios.fun().then(res=>{                  $this.tableData = $this.tableData.concat(res.data)//將請求回來的數據和當前展示的數據合并在一起        })              }    }  })

好了,表格滾動下拉懶加載數據就是這樣實現的,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 揭西县| 洛扎县| 静宁县| 雷山县| 信阳市| 临夏县| 平山县| 宝鸡市| 文昌市| 萨嘎县| 砚山县| 华阴市| 甘孜县| 临泉县| 如东县| 滦平县| 会东县| 白玉县| 林芝县| 文山县| 高碑店市| 敦化市| 响水县| 平湖市| 华阴市| 汽车| 巴南区| 巴林右旗| 调兵山市| 四子王旗| 长顺县| 怀远县| 克拉玛依市| 信宜市| 波密县| 青浦区| 南城县| 丰都县| 营山县| 长顺县| 普宁市|