Flex组件未刷新

时间:2012-05-17 06:21:01

标签: flex4 flash refresh

您好我们在UI方面的项目中使用Flex 4。在加载应用程序仪表板时,我们获得了一组pod。我们点击一​​个pod,然后打开pod视图。此pod视图包含datagrid,第一列作为超链接。当您点击超链接时,会打开另一个屏幕,这是我们的模块屏幕。

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

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

当用户第一次打开屏幕时,我们从后端获得一些状态。根据这些状态,我将窗口阴影设置为只读并启用/禁用按钮。当我点击SUBMIT时,我仍然点击后端并获得状态,但没有启用/禁用按钮或窗口遮挡。

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

当用户第一次打开屏幕时会调用updateComplete。当用户单击SUBMIT时,不会调用它。为什么会这样?

我已尝试使用Loader和SWFLoader加载我的SWF文件,如下所示,但它也无法正常工作。 var request:URLRequest = new URLRequest(“com / citi / risk / credit / maintenance / view / widgets / CRCMaintenanceModule.swf”); var loader:Loader = new Loader(); Loader.load方法(请求);

非常感谢任何帮助或指示。

1 个答案:

答案 0 :(得分:0)

您可能需要考虑两件事:

1)简而言之,FlexEvent.UPDATE_COMPLETE是一个被调度的事件已经完成渲染(通过Flex组件生命周期)。这可能会发生一次或多次,具体取决于组件更改的频率,并且需要重新呈现状态。

此事件的频率/时间将根据调度它的对象而有所不同。例如,正在调整大小的容器将分配这么多时间。永不改变的标签只能执行一次。

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

2)当您单击“提交”时,您添加“updateComplete”侦听器的对象可能没有经过足够的更改来完成Flex的组件生命周期。因此,不会发送任何事件。

为什么不发生这种情况的答案实际上取决于您添加了事件监听器的对象。

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