一、根據(組件)div高度判斷是否第二次拉接口
由于組件原因,當頁面第一次加載數據量較大的時候,只顯示了幾條數據。第二次拉口才能正常滾動。組件那邊說是因為高度判斷的問題,高度不夠重新拉一下接口
- 思路:當內容高度小于div高度并且每行高度和數組長度的乘積大于div高度時重新拉一次接口
- 實現:使用ref獲取當前組件div高度
const tableHeight = this.$refs.refName.$el.getElementByClassName('divName')[0].offsetheight
使用ref獲取當前組件每行高度
const tableHeight = this.$refs.refName.$el.getElementByClassName('rowName')[0].offsetheight
在這元素就獲取完成了,但是在這確踩了一個坑:拉完接口立馬獲取元素的高度為0,放到nextTick也不頂用,排查很久發現用settimeout延遲獲取一下就可以了
原因:元素渲染需要時間,立馬獲取高度肯定是沒有的
二、input輸入框選中完成自動聚焦到下一個輸入框
- 思路 選中輸入完成,失焦當前輸入框,js聚焦下一個輸入框
在實現時碰到了一個問題,沒辦法手動失焦元素,導致有兩個輸入框同時聚焦 - 解決:使用一個頁面只能有一個元素被點擊的特性來做這個功能
<input id='xxx' />
document.getElementById('xxx').click()
就能實現了(雖然有點丑)
三、首次加載數據量太大頁面卡死優化
- 思路:使用分頁加載(不符合產品需求pass),使用虛擬滾動(可行)