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