2011-07-14 95 views
1

有沒有辦法將組件或應用程序刷新回初始狀態?即使我註銷,我也有一個手風琴導航器保留在最近選定的索引上。現在,我的註銷功能將我帶回到處於狀態(1)的登錄頁面。如果我重新登錄並進入手風琴,它就在我觀看的最後一個標籤上。刷新Flex組件

我希望能夠清除導航中的控件的任何數據,並重新將導航回到其默認值。我以爲像

public function logout():void{ 
    currentState = "NotLoggedIn" 
    myAccordion.initialize(); } 

會工作,但沒有任何反應。這是在Flex 4中完成的。

我知道我可以製作一個巨大的循環來清除每個控件,並將accordion的selectedIndex設置爲0.我希望獲得更簡單的解決方案。

回答

2

這取決於你所說的「國家」。

如果你已經在你的Flex組件實現的狀態,你可以使用恢復到以前的狀態:

component.currentState = 'myInitialState'; 

如果你談論的不是國家,明確,而是有關屬性的內部值的組件,那麼Flex不會保留這些屬性值的歷史記錄。您可以自己跟蹤它們並手動重置它們。

一旦你這樣做了,你的組件將會處於初始狀態。

+0

@Flextras - 是的,我應該小心使用「狀態」一詞。我沒有定義初始狀態。爲什麼調用initialize不起作用?如果我第一次從顯示列表中刪除手風琴,它會起作用嗎?是否有全球clearAll我可以使用? – smulholland2

+1

@totbar從DisplayList中刪除一個Accordion不會改變它的任何屬性(除了可能的父屬性)。我不知道Initialize對手風琴的作用。它不是Flex LifeCycle方法。您可以通過閱讀Flex組件生命週期來獲益。 (http://help.adobe.com/en_US/flex/using/WS460ee381960520ad-2811830c121e9107ecb-7fff.html)。這解釋了Flex如何創建和初始化它的組件。很多組件的「默認」狀態取決於您設置的屬性。 – JeffryHouser