2011-12-01 21 views
1

我注意到ExtJS 3.x和4.x之間的一個主要區別是渲染/佈局計算是如何處理在包含顯示元素的元素內渲染的組件:none(不是一個Ext創建/監視的包含元素)。在3.x中,在顯示包含元素時,它所包含的Ext組件將被正確渲染並根據我爲它設置的任何尺寸進行調整。ExtJS 4 - 渲染最初隱藏的組件

但是,在4.x中,當顯示其包含的元素時,該相同的組件將根本不顯示,並且高度和寬度都爲零。如果我對.setSize()進行了調用,那麼它將被正確顯示。問題是,在我的應用程序中,沒有辦法能夠通過所有可能導致隱藏組件顯示的事件,並添加代碼以確保手動強制重新計算其佈局。

所以我的問題是,有沒有辦法在4.x的所有組件在這種情況下獲得3.x的行爲?

回答

0

您可以嘗試的是在您的組件上設置偵聽器,以便將底層DOM元素設置爲delegate,這可能會解決您的問題。 但是我的建議是儘可能使用框架來管理使用Viewport的整個頁面佈局。例如,您仍然可以吸入HTML(如果您必須)並在容器或面板中渲染它。這裏的完美用例是由服務器端代碼(jsp,gsp,asp ..)生成的頁眉和頁腳,然後使用contentEl : 'myDivId'配置在視口的北部或南部區域顯示。

+0

不幸的是,使用該框架來管理整個頁面佈局,對於正在處理的應用程序而言,這不是一個選項。雖然事件代表團的想法很有趣,但它看起來有點倒退......因爲它需要是非extjs元素通知組件,它包含的組件現在可見並且它們應該重新計算它們的佈局,對吧? –

+0

是的,就是這個想法。看看Saki的例子,我相信他正是那樣做的。 – dbrin