2011-07-14 70 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