2017-01-30 40 views
16

我放置了scrollIntoView()使我的網格滾動可見。當我在gridContainer中添加新的網格時,我使用這種方法。這是我可以從調試器檢查的工作。 我scrollIntoView()什麼推遲呢?

grid.body.dom.scrollIntoView(); 

但是,一旦它在延遲功能達到它不是scrollIntoView()工作。任何人都可以請建議如何跳過這個。什麼推遲做,如何跳過這個。此外,我正在使用grid.focus()並再次發生同樣的事情。網格正在進入視圖,但從調試器出來後沒有出現在視圖中。

defer: function(fn, millis, scope, args, appendArgs) { 
    fn = Ext.Function.bind(fn, scope, args, appendArgs); 
    if (millis > 0) { 
    return setTimeout(function() { 
     if (Ext.elevateFunction) { 
     Ext.elevateFunction(fn); 
     } else { 
     fn(); 
     } 
    }, millis); 
    } 
    fn(); 
    return 0; 
}, 
+1

'defer'基本上就像一個'setTimeout'。然而,我並不清楚你的問題的其餘部分。 –

+0

@EvanTrimboli如果我不想超時,我需要做什麼。我在一段時間後在我的網格中給出了'grid.body.dom.scrollIntoView();'這段代碼不工作。 – David

+2

沒有足夠的信息,是什麼導致了「延期」調用?你爲什麼不使用滾輪API? 'grid.body.dom'不是滾動的正確的東西。 –

回答

3

一種解決方法是不滾動到該組件,但使用card layout爲中心容器並顯示新的網格中的其它卡上。

var centerCt; // reference to your center container 
var centerLayout = centerContainer.getLayout(); 
var newGrid = Ext.create('Ext.grid.Panel', {}); 
centerCt.add(newGrid); 
centerLayout.setActiveItem(newGrid); 

我創建了一個Sencha Fiddle

+0

我正在使用vbox,當我更改爲卡沒有第二個網格加載。那麼讓我試試這個,不管你寫的是什麼答案,並在一段時間內回覆你。 – David

+0

這不起作用,因爲我在這裏只顯示一個網格。我需要我的面板可以滾動。 – David