了解actionscript中的cairngorm事件

时间:2010-11-18 15:29:19

标签: flex actionscript-3 flex4

我有一个下载,由一个带有caringorm事件的Web服务异步填充。我需要知道此事件何时完成,以便我可以设置所选的组合框行。数据已填充,但我无法弄清楚如何订阅此事件。有没有人知道这样做很热。

此代码似乎不起作用。

CairngormEventDispatcher.getInstance()。addEventListener(SomeEvent.GETDATA,formLoaded); new SomeEvent(SomeEvent.GETDATA).dispatch();

protected function formLoaded(event:CairngormEvent):void { Alert.show( “活泉”); }

1 个答案:

答案 0 :(得分:2)

Cairngorm是一个MVC微体系结构。

首先:这里是cairngorm 2.2.1 http://cairngormdocs.org/docs/cairngorm_2_2_1/index.html

的文档

CairngormEvent通过FrontController类的addCommand方法与ICommand相关联。 因此,每当执行SomeEvent(SomeEvent.GETDATA).dispatch()时,您实际上正在执行控制器与SomeEvent.GETDATA关联的命令的execute()方法。

从CairngormEventDispatcher收听事件不是最佳做法。 在任何情况下都不应该调用CairngormEventDispatcher,该类是为了使整个微体系结构正常运行。

您的视图(组合框)应该自动对模型(Web服务的结果)作出反应(或者通过中间的其他对象[如puremvc那样])

我建议使用cairngorm快速解决您的问题:

  • 将webservice注册到服务定位器中,以便为其提供应用程序级别引用(为此,只需创建一个扩展ServiceLocator的mxml组件,并将httpservice或webservice标记放在那里,然后分配一个id它)

  • 创建模型定位器(存储从Web检索的数据的类),并将要在组合框中显示的数据列表标记为[Bindable]

  • 识别与SomeEvent.GETDATA结合的命令和:

  • 在执行方法
  • 中调用服务定位器中注册的服务
  • 实施IResponder接口(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/IResponder.html)以处理服务结果(将您的命令注册为响应者)执行方法中的服务)
  • 在结果方法中解析您从服务器返回的数据,然后将它们存储到模型定位器中(可以通过单例访问器轻松检索)

  • 在视图(包含组合的mxml文件)中,将组合数据提供者绑定到模型定位器数据列表(之前可以绑定几行),以使其对模型中发生的更改做出反应。 / p>

玩得开心;)