2009-10-04 47 views
3

當我嘗試在操作腳本中訪問我的選項卡導航器控件的隱藏TAB時,它返回空錯誤。但是,如果我只是在用戶界面中激活控件一次,它就可以正常工作。很顯然,直到我使用它時纔會創建控件。我如何使默認情況下自動創建的所有選項卡?Flex 3 - 強制所有控件在開始時渲染

+1

你必須問自己爲什麼你試圖訪問一個沒有實例化的選項卡或其他任何控制。如果您可以使用數據提供者或其他可綁定屬性,則沒有理由不能設置該變量。 – AndrewB 2009-10-05 00:08:55

+0

@AndrewB - 是的,你是對的。在我的情況下,我使用一個XML對象作爲TAB的兩個數據提供者(選項卡包含樹控件)並在代碼中動態設置它。它發生在用戶在界面上執行某些操作時,我必須將其移動到未初始化的選項卡上,然後嘗試設置樹控件的dataprovider屬性...因此出現錯誤。可能我應該爲每個選項卡分別提供數據提供程序,並且只需更新它們,並且Tab將在必要時進行提取。但是你的推理路線是正確的路要走。謝謝。 – captonssj 2009-10-07 16:06:21

回答

12
<mx:TabNavigator creationPolicy="all"/> 

應該這樣做。延期實例是一個特徵,但有時候這是一個麻煩。

+0

謝謝。這工作! – captonssj 2009-10-04 21:28:46

+0

雅,那總是一種奇怪的「跆拳道」。你應該繼續前進,並接受答案,如果它的工作。 ;) – 2009-10-05 01:43:53

0

Flex框架將優化創建爲默認值(creationPolicy =「auto」),因此如果您有一個包含大量選項卡的配置對話框,並且最有用的選項卡是第一個,則您的應用程序不會花費時間和內存初始化用戶從不會看到的選項卡。

當這樣的對話框永遠不會釋放時,這會產生很大的差異,並且是一個很好的默認設置。

需要注意的一件事是在對話框/表單中使用私有變量,而不是將數據推送到隱藏頁面上的控件。這種風格將整個表單視爲一個組件,就像它是一個組件。重複一遍:MXML表單/對話框/畫布是一個類,除了包含其他組件外,它還可以包含數據和方法。

乾杯

+0

在這個筆記上,如果你有一些共享的數據級別的變量在多個視圖中使用,那麼把它分解到一個單獨的類並且通過對象引用傳遞它可能是一個更好的主意,或者使其成爲靜態和[Bindable]。這樣,您可以選擇何時以及如何初始化數據,並且可以在全局或通過某些訪問例程進行綁定。這也通過將UI與底層數據模型分離來安撫軟件設計的神。 但是,如果變量是另一個UI元素,請查看creationComplete事件。 – 2012-05-31 15:19:15

0

在一個側面說明,我碰上一個多態的應用延遲加載的政策,並通過強制所有元件被包括在初始狀態下不可見的規避它。需要考慮的事情,但只能作爲破解。

+0

這是一個黑客,我看到每個視覺框架使用 – 2012-06-06 22:08:56