Vue 使用 Devextreme框架,下拉框不會隨頁面的滾動而移動的問題解決

along_bro發表於2024-05-23

Devextreme的DxSelectBox元件的下拉選項部分,預設是絕對位置佈局,導致頁面滾動時,下拉部分不會上下移動

個人的解決方案,監聽頁面滾動事件,如果目前有開啟的下拉框,先關閉下拉框,隨後迅速再開啟,視覺效果上可以做到下拉選項跟隨元件滾動

vue專案中可能會有很多頁面,很多下拉框,我是用的給每個下拉框元件一個id,然後分別處理opened和closed事件

1. 定義全域性變數 SelectedBoxId, 每次有下拉框開啟時,在opened事件中,將id賦值到這個變數

2. 每個下拉元件的closed事件中,傳入當前元件id,如果當前開啟的是當前下拉框,將SelectedBoxId 改成null

3. 監聽頁面滾動事件,處理下拉框的關閉和開啟

  handleScroll(e) {
      if(this.selectedBoxId) {
        var comp = document.getElementById(this.selectedBoxId).__vue__.instance
        comp.close()
        setTimeout(()=>{
          comp.open()
        },50)
      }
    }

相關文章