在 Flex 中的组件初始化期间设置变量

Posted

技术标签:

【中文标题】在 Flex 中的组件初始化期间设置变量【英文标题】:Setting variables during component initialization in Flex 【发布时间】:2011-04-30 09:27:17 【问题描述】:

我正在加载一个组件,该组件调用 HTTPService 以获取数据,然后这些数据将用于设置组件中的某些变量。我在 init() 函数中调用 HTTPService(用于初始化事件),然后根据 HTTPService 结果处理程序中接收到的数据设置变量。但是,变量在初始化阶段和创建完成阶段仍然为空。如果我尝试读取 creationComp() 函数中的变量(对于 creationComplete 事件),这些变量仍然为空。它是否正确?

我想我不太了解 flex 初始化周期。这些变量何时实际设置并可供使用?我需要在组件加载后自动操作这些变量。在creationComplete 之后是否有适当的事件或其他方式来解决此问题?我正在使用 Flex 3。

【问题讨论】:

【参考方案1】:

您对 Flex 组件生命周期的理解是正确的;在创建完成之前初始化事件触发。

但是,HTTPService 调用是一个单独的异步操作。不能保证在 creationComplete 事件触发时调用结果处理程序。您应该改为在结果处理程序中操作变量。

【讨论】:

谢谢,这是有道理的。我做了一些更多的测试,变量有时会在 creationComp 触发时设置,但有时不会。 是的,这很好地解释了它。如果您需要从组件外部访问这些值,则应侦听 HTTPService 在组件内部调度的结果事件,然后从组件调度适当的事件以通知外部侦听器。【参考方案2】:

您应该考虑在 HTTPService 返回之前阻止从您的组件分派 creationComplete 事件,然后自己手动分派该事件。

这将解决您的时间问题。

【讨论】:

我如何知道 HTTPService 何时返回(您的意思是在 HTTPService 结果处理程序中放置逻辑吗?)以及如何延迟 creationComplete 事件直到满足某个条件(例如 HTTPService 被返回)? HTTP 服务在获取数据时调度结果事件。 help.adobe.com/en_US/FlashPlatform//reference/actionscript/3/mx/… creationComplete 事件由您的组件在它从 UIComponent 继承的 set 初始化方法中调度。如果你重写了这个方法并阻止了这里事件的派发,你可以在http服务结果事件的handler中派发它。 谢谢,这有助于了解。这次我可能会将变量设置逻辑放在 HTTP 结果处理程序中,因为这是一个简单的操作,但很高兴知道这是另一种方法

以上是关于在 Flex 中的组件初始化期间设置变量的主要内容,如果未能解决你的问题,请参考以下文章

Flex 绑定变量没有效果

在过程模拟期间初始化状态变量的导数

重新初始化组件

MXML 类初始化顺序

Angular 2+初始化输入值

在swift初始化期间使用枚举设置属性