2014-06-17 30 views
0

我有一個表單和一個tabpanel用戶應該在表單中輸入一些信息並在最後點擊一個提交按鈕。我有一個控制器,控制該按鈕單擊事件,並根據輸入觸發各種應用程序級別的事件。我在所有選項卡的控制器中捕獲這些事件並進行單獨處理。會發生什麼情況是因爲並非所有選項卡都是在開始時渲染的,因此只有第一個選項卡顯示輸出,而其他選項則顯示錯誤。我想知道是否有一種方法可以捕捉事件,首先等待組件渲染並執行處理。爲未渲染Extjs 4的組件添加事件?

謝謝。

+0

其他標籤給出了什麼錯誤?如果他們依賴你爲什麼試圖推遲其他標籤渲染?你在你的標籤中期待什麼樣的輸出? – Dev

+0

嗯,我不推遲渲染自己。但是看起來,只要我不點擊它們,其他標籤就不會呈現。有沒有辦法在應用程序啓動時渲染它們? –

回答

0

請看看deferredRender:布爾配置爲tabpanel。

默認情況下爲true,默認將子項的呈現延遲到瀏覽器DOM,直到激活選項卡。 False會在渲染布局後立即渲染所有包含的項目。如果將大量內容或大量重要控件呈現到默認情況下未顯示的面板中,將其設置爲true可能會提高性能。

+0

非常感謝您現在的工作。我可能不得不做一些不同的事情,因爲選項卡上有太多這樣的內容,在開始時不需要渲染,但現在它已經完成了我想要的東西。非常感謝 –

+0

很高興,它幫助你:-) – Dev

0

約侑inital處理程序如何排隊某種pendingJob對象的那些標籤!rendered,然後在afterrendershow事件您檢查,並處理和清除它?我做了一些與卡片佈局類似的工作,效果很好。

+0

是的,這正是我需要的。我想要做的是創建全局布爾變量並使用它們來查看用戶輸入的內容。但它感覺並不正確。你認爲這是一個好的理想嗎?我希望能夠發起一個事件並在晚些時候捕獲它,或者可能在事後處理或強制渲染對象來完成一些工作。但我認爲你有一個好點,我應該嘗試。或者那個方向的東西。謝謝 –

+0

全局變量不是很好的做法。但它不是魔鬼。你不必破壞你的MVC邏輯。 1.輸入改變的火災事件。 2.感興趣的控制器收聽事件,並在被觸發時檢查是否可見/呈現/準備好。如果是,更新。如果不是,標記爲髒或什麼的,因爲準備好了。他們什麼時候準備好?我使用'show'事件和/或'afterrender'。 – adaskos

+0

是的,我也會使用afterrender。非常感謝我最終需要做這樣的事情,但現在我將把deferrender設置爲false,並在應用程序啓動時渲染所有選項卡。爲了提高性能,我會使用這個選項,一旦我更好地瞭解MVC的細節。再次感謝您的好建議 –