2010-11-18 27 views
0

我有一个下拉式异步填充的web服务,它带有一个caringorm事件。我需要知道此事件何时完成,因此我可以设置所选的组合框行。数据被填充,但我无法弄清楚如何订阅这个事件。有没有人知道这很热。了解操作脚本中的cairngormevents

此代码似乎不起作用。

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

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

回答

2

Cairngorm是一个MVC微架构。

首先:这里是为凯恩戈姆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的确实])

我什么建议,以迅速解决问题使用凯恩戈姆是:

  • 注册Web服务到服务定位器,以便有一个应用程序级别参考它(要做到这一点,只需创建扩展服务定位MXML组件,并把你的HTTPService或WebService标签在那里,然后为其分配一个ID)

  • 创建模型定位器(存储从网络上检索数据的类),并且你的数据列表要在组合框中显示为[绑定]

  • 识别加上SomeEvent.GETDATA和命令:

  • 呼叫服务定位器在执行方法
  • 实现的IResponder接口注册的服务(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/IResponder.html )以处理服务的结果(在执行方法中将您的命令注册为服务的响应者)
  • 在结果的方法解析你有从服务器返回的数据,然后将它们存储到模型定位器(其可以经由单存取很容易地检索)

  • 在视图(MXML文件保持组合) ,将组合数据提供者绑定到您的模型定位器数据列表(可以在几行之前进行绑定),以便对模型中发生的变化做出反应。

乐趣;)