我有一个下载,由一个带有caringorm事件的Web服务异步填充。我需要知道此事件何时完成,以便我可以设置所选的组合框行。数据已填充,但我无法弄清楚如何订阅此事件。有没有人知道这样做很热。
此代码似乎不起作用。
CairngormEventDispatcher.getInstance()。addEventListener(SomeEvent.GETDATA,formLoaded); new SomeEvent(SomeEvent.GETDATA).dispatch();
protected function formLoaded(event:CairngormEvent):void { Alert.show( “活泉”); }
答案 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结合的命令和:
在结果方法中解析您从服务器返回的数据,然后将它们存储到模型定位器中(可以通过单例访问器轻松检索)
在视图(包含组合的mxml文件)中,将组合数据提供者绑定到模型定位器数据列表(之前可以绑定几行),以使其对模型中发生的更改做出反应。 / p>
玩得开心;)