【发布时间】:2011-01-10 04:20:57
【问题描述】:
我有一个带有登录屏幕的应用程序。当用户点击“enter”时,状态变为“login”并触发加载子组件(尽管子组件此时保持不可见)。孩子包含用户在登录时需要的许多功能(即,他们的屏幕名称和设置是从数据库中检索的)。 'Parent' 中包含以下内容:
<local:comp id="localComp" includeIn="login" includeInLayout="false" visible="false"/>
<mx:Button label="login" click="currentState='login'"/>
<mx:Button label="logout" click="currentState='Default'"/>
我的问题是,当用户注销(状态更改为“默认”)然后重新登录(状态更改回“登录”)时,孩子不会再次被“触发”并且功能 w/in孩子不要重新加载。有没有办法强迫我的孩子刷新?
注意:虽然将子函数移动到父函数会更容易,但它很复杂......我将这些函数移动到子函数以便更容易理解
更新:我什至尝试在我的状态中添加“exitState”:
<s:State name="login" exitState="removeElement(localComp)" />
这也不起作用,因为我收到一个错误:“RangeError: Index 0 is out of range.”
更新: 即使您可以从父母那里调用孩子的函数,我的问题是需要“创建”孩子才能不显示错误。对我来说,为什么 flex 团队会让移除和添加孩子这样的事情变得如此复杂,这对我来说毫无意义。
【问题讨论】:
-
好的。让我们尝试以不同的方式解决这个问题。当状态改变时,你需要你的 localComp 做什么?相反,您可以从 currentStageChange 事件调用 localComp 上的方法吗?
-
我需要做的就是调用 init();驻留在 localComp 中的函数。
标签: apache-flex