0

嗨,我们在 UI 端的项目中使用 Flex 4。在加载应用程序仪表板时,我们得到一组 pod。我们单击一个 pod,然后 pod 视图打开。此 pod 视图包含数据网格,其中第一列作为超链接。当您单击超链接时,会打开另一个屏幕,这是我们的模块屏幕。

该模块屏幕顶部有一个提交按钮和几个数据网格。现在我们使用 RemoteObject 在网格中加载数据。每个网格的父容器都是一个 WindowShade 组件。

现在我们的要求是用户可以在一个或两个网格中进行修改,然后单击提交。根据用户修改的网格,我想将相应的 Window shade 设置为只读。如果用户修改了两个网格,我需要将两个 Window Shade 组件设为只读并禁用 SUBMIT 按钮。用户应该能够在单击提交时立即看到此更改,而无需关闭屏幕或离开屏幕。

当用户第一次打开屏幕时,我们会从后端获得一些状态,根据这些状态,我将 Window shades 设置为只读并启用/禁用按钮。当我单击提交时,我仍然点击后端并获取状态,但没有启用/禁用按钮或窗帘。

我在创建 swf 的 mxml 文件的 updateComplete 方法中编写了启用/禁用的逻辑。

updateComplete 在用户第一次打开屏幕时被调用。当用户点击提交时它不会被调用。为什么会这样?

我尝试使用 Loader 和 SWFLoader 来加载我的 SWF 文件,如下所示,但它也不起作用。var request:URLRequest = new URLRequest("com/citi/risk/credit/maintenance/view/widgets/CRCMaintenanceModule.swf"); var loader:Loader = new Loader(); loader.load(请求);

任何帮助或指示将不胜感激。

4

1 回答 1

0

您可能需要考虑两件事:

1) 简而言之,FlexEvent.UPDATE_COMPLETE被调度的事件本身已经完成渲染(经历了一个 Flex 组件生命周期)。这可能会发生一次或多次,具体取决于组件更改的频率以及需要重新渲染其状态。

此事件的频率/时间将根据调度它的对象而有所不同。例如,正在调整大小的容器将多次分派。一个从不改变的标签可能只做一次。

相反,您应该考虑添加一个“creationComplete”( FlexEvent.CREATION_COMPLETE) 事件侦听器。“creationComplete”只发生一次,您可以将侦听器添加到包含提交按钮的任何对象。

2) 当您单击提交时,您添加“updateComplete”侦听器的对象可能还没有改变到足以通过 Flex 的组件生命周期。所以没有事件被调度。

为什么这不会发生的答案实际上取决于您将事件侦听器添加到哪个对象。

您是否尝试过在提交按钮上使用“单击”处理程序,以便在单击按钮时禁用适当的元素?同样,与“updateComplete”不同,“click”事件只会发生一次;)

于 2012-05-17T10:19:29.137 回答