el-tree 讓已選擇的節點后滾動到最頂部


<el-tree
            :empty-text="emptyText"
            id="filterTree"
            class="filter-tree"
            style="overflow:scroll; overflow-x: hidden;flex:1;"
            :style="{ height: tHeight - 60 + 'px' }"
            node-key="id"
            :data="orgTreeData"
            :props="defaultProps"
            @node-click="getNodeData"
            default-expand-all
            highlight-current
            ref="orgTree"
            :filter-node-method="filterNode"
          >
          </el-tree>

  

getTreeData() {
      this.emptyText = '數據加載中。。。';
      if (this.orgTreeData.length === 0) {
        projectDataAPI.listOrgTree().then(response => {
          this.orgTreeData = response.data;
          if (this.orgTreeData.length === 0) {
            this.emptyText = '暫無數據';
          }

      /**
       *下面的代碼是核心代碼 滾動到可見范圍區 獲取樹的數據后讓指定節點高亮 獲取高亮節點距離父元素的頂部距離(offsetTop) 獲得父容器的文檔內容的高度(scrollHeight) 父容器的高度(clientHeight)
       *當offsetTop > clientHeight 將滾動條滾動到可見區域
       */

          this.$nextTick(async () => {
            await this.$refs.orgTree.setCurrentKey(this.projectId);
            let nodeOffsetTop = document.querySelector(
              '.filter-tree .is-current'
            ).offsetTop;
            let parentNodeClientHeight = document.querySelector('#filterTree')
              .clientHeight;
            let parentNodeScrollHeight = document.querySelector(
              '.filter-tree .el-tree-node'
            ).scrollHeight;
            if (nodeOffsetTop > parentNodeClientHeight) {
              document.querySelector('#filterTree').scrollTop =
                nodeOffsetTop - parentNodeClientHeight / 2;
            }
          });
        });
      }
    },

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM