想象一下,我们有一个对象正在调度某个事件,并且该对象应该对该事件执行一些操作。捕捉这个事件的正确方法是什么?我可以直接在我的对象中收听这个事件,还是应该让这个事件通过 EventMap 传播?
示例:我有一个带有表单的弹出窗口。在提交表单时,我将向远程服务器发送请求并关闭此弹出窗口。在不将自定义事件分派到 EventMap 的情况下单击时执行弹出关闭在意识形态上是否正确?谢谢。
2 回答
就我个人而言,我更喜欢负责创建视图或弹出窗口之类的对象也应该负责销毁它们。而且我更喜欢仅将 Mate 用于解决一些跨应用程序任务,尤其是客户端-服务器通信。所以我更喜欢在组件级别使用普通的旧 ActionScript 事件处理。如果某个组件创建了弹出窗口,它可以监听一些提交事件并销毁弹出窗口。
另一种情况是弹出窗口是由 Mate 本身创建的(我的意思是在事件地图中)。在这种情况下,我认为在 Mate 处理程序中销毁窗口没有问题,该处理程序处理一些提交事件并对服务器执行请求并立即销毁窗口。
但无论如何,您应该使用简单的规则来分派 Mate 事件(我的意思是由事件映射处理的事件):不要分派一些低级别的事件。您应该将它们转换为反映相应应用程序级别上的业务逻辑的事件。在您的情况下,您不应该考虑将表单提交为两个操作:请求服务器和关闭窗口。从窗口的角度来看,它只是表单提交,窗口不应该关心是否会有服务器请求或从 SharedObject 甚至从某种模型读取数据。所以窗口应该调度提交事件,而 Mate 地图应该处理这个事件,并在同一个处理程序中产生请求和窗口销毁。这样您就可以在不知道视图是在弹出窗口中还是在本机 AIR 窗口中的情况下使用视图。只需调整您的伴侣的事件地图。
并且不要忘记 Mate 的地图可以是分层的。因此,您可以划分业务逻辑处理事件的级别。
是的,这是正确的,您不需要仅为关闭窗口调度事件,因为事件的主要目的是通知外部/父母某些事情已完成/已更改