2017-10-11 87 views
0

只是關於ExtJS中標籤欄的一個簡短問題。我已經構建了一個窗口,其中包含許多控件,並且在選項卡欄的6個選項卡中的每個選項卡中都有一組控件。每個選項卡中的控件幾乎相同,我不處理選項卡更改事件。然而,當我選擇一個選項卡時,焦點會返回到對話框的頂部(這樣做會以一種公平的方式滾動),然後用戶必須手動向下滾動到選項卡以查看現在可見的控件。從標籤欄中選擇標籤時,ExtJS窗口跳轉到頂部

更改選項卡是否會產生Windows refesh?如果是這樣,有什麼辦法可以阻止這種情況發生?

我需要承認,這種情況僅限於我的兩臺電腦中的一臺。我已經在Azure中安裝完成的應用程序,並且在IE或Chrome中從machine1運行它時,它可以正常工作。但是,如果我使用與IE和Chrome相同版本的machine2,則會發生跳躍和一些奇怪的事件。是否有一些機器相關的值可能導致跳轉?

謝謝

回答

0

只是爲了讓你知道我發現了什麼與一些進一步的挖掘身邊發生的事情。我的兩臺PC之間的區別在於筆記本電腦具有觸摸屏。這導致ExtJS添加特殊的滾動類來處理用戶用他的手指滾動對話框的主體。

這是我創造的幾個問題。首先,跳轉到頂部是由切換活動選項卡後重置滾動器引起的。重置功能解除了一切,包括將滾動設置回頂端。有趣的是,通過切換標籤頁導致96個scoller被重置。我不知道爲什麼會出現這種情況,並且懷疑它會導致整個對話框刷新,而不僅僅是標籤,我不明白爲什麼需要刷新。我正在尋找一種方法來阻止這種情況的發生。

我提到了上面的一些其他問題。一個是第二個標籤顯示爲空,但帶有滾動條。我們可以使用這些來查看適當的標籤內容。我發現這是一個Ext JS錯誤。錯誤的是,當Ext JS激活下一個選項卡時,它將選項卡放在滾動類的外部(由x-scroll-scroller標記),而不是在其內部。這導致它感到困惑。爲了解決這個問題,我在Ext.layout.container.Container類的getRenderTarget函數中添加了一些代碼。以前,這簡直是

getRenderTarget: function() { 
    return this.owner.getTargetEl(); 
} 

我添加了一個特定的測試,看看如果第一個孩子是一個滾動條,而既然如此,返回滾動條來代替。

getRenderTarget: function() { 
    var me = this.owner; 
    if (me.body && me.body.dom.firstChild.className == 'x-scroll-scroller') 
     return me.body.dom.firstChild; 
    return me.getTargetEl(); 
} 

選項卡控件的血統現在保持正確,我簡要提及的其他奇怪的工件消失了。

因此目前的狀態。我正在尋找停止refesh的方法,並會在我找到它時進行更新,但觸摸屏支持絕對是flaky。

僅供參考。我正在使用Ext JS 6.1。