日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

el-table 定位 跳轉 至指定 行 位置,保證數據更新后位置不變

作者:丶扁扁的糖是扁的 更新時間: 2022-01-19 編程語言

el-table數據刷新后會重新定位至表格頭的位置,想要更新數據后任處于之前操作的位置,就要在操作時記錄下當前表格滾動條的位置,數據更新后設置表格位置為剛才記憶的位置。

記憶上次位置:

     /**
     * @description: 獲取表格滾動條位置
     * @param ifMemory 有沒有ifMemory決定了該函數是保存位置還是跳轉位置
     * @return void
     */
    getTableScrollTop( ifMemory = false ) {
      if ( !this.$refs['elTable'] ) return //不存在這個表格則返回
      let elTable = this.$refs['elTable'].$el
      if ( !elTable ) return
      const scrollParent = elTable.querySelector('.el-table__body-wrapper')
      if ( ifMemory ) {
        //保存
        this.memoryScrollTop = scrollParent.scrollTop //存下當前編輯行的ScrollTop
      } else {
        //跳轉
        scrollParent.scrollTop = this.memoryScrollTop //跳轉到存下編輯行的ScrollTop
      }
    },

使操作行定位至表格最上方:

     /**
     * @description: 獲取表格滾動條位置
     * @param index 有沒有 index 決定了該函數是保存位置還是跳轉位置
     * @return void
     */
    getTableScrollTop( index ) {
      if (!this.$refs['elTable']) return //不存在這個表格則返回
      let elTable = this.$refs['elTable'].$el
      if ( !elTable ) return
      const scrollParent = elTable.querySelector('.el-table__body-wrapper')
      const targetTop = elTable.querySelectorAll('.el-table__body tr')[index].getBoundingClientRect().top //該行的位置
      const containerTop = elTable.querySelector('.el-table__body').getBoundingClientRect().top //body的位置
      if ( index ) {
        //保存
        this.memoryScrollTop = targetTop - containerTop //存下當前編輯行的ScrollTop
      } else {
        //跳轉
        scrollParent.scrollTop = this.memoryScrollTop //跳轉到存下編輯行的ScrollTop
      }
    },

?表格更新后不能立即調用該函數設置表格滾動條位置,但是借助延時函數可以解決這個問題,甚至不需要設置延時數

setTimeout(() => {
    this.getTableScrollTop()
}) //不用給延遲數,夠用

原文鏈接:https://blog.csdn.net/sugerinaflat/article/details/121822434

欄目分類
最近更新