Actionscript 3 MVC模式-将事件侦听器从控制器绑定到视图元素?

Actionscript 3 MVC模式-将事件侦听器从控制器绑定到视图元素?,actionscript-3,model-view-controller,design-patterns,Actionscript 3,Model View Controller,Design Patterns,如何将事件侦听器从控制器绑定到视图的元素(例如按钮单击事件)及其自己的处理程序 最初,我是从视图(例如)来做这件事的 button.addEventListener(MouseEvent.CLICK, controller.buttonClick); 但现在意识到这是错误的,因为读取每个视图只应该知道它所表示的模型,而不知道控制器的任何内容。模型应该有此按钮的实例,因此控制器将访问模型以添加事件侦听器,但视图将只显示此按钮,仅添加到阶段。模型应具有此按钮的实例,因此控制器将访问模型以添加事件侦

如何将事件侦听器从控制器绑定到视图的元素(例如按钮单击事件)及其自己的处理程序

最初,我是从视图(例如)来做这件事的

button.addEventListener(MouseEvent.CLICK, controller.buttonClick);

但现在意识到这是错误的,因为读取每个视图只应该知道它所表示的模型,而不知道控制器的任何内容。模型应该有此按钮的实例,因此控制器将访问模型以添加事件侦听器,但视图将只显示此按钮,仅添加到阶段。

模型应具有此按钮的实例,因此控制器将访问模型以添加事件侦听器,但视图将仅显示此按钮,仅添加到阶段。

控制器直接引用视图,因此可以将事件侦听器绑定到适当的视图元素。如果愿意,视图可以公开公共方法来设置绑定。

控制器直接引用视图,因此可以将事件侦听器绑定到适当的视图元素。如果您愿意,View可以公开公共方法来设置绑定。

当然不是因为模型不必知道视图有什么gui?如果我们只讨论数据,那么是的,但是我们已经实现了UI组件,您应该有一些地方来描述它们,例如,看看flex 4 spark皮肤,非常好的体系结构,其中,作为由mxml视图扩展的模型,您可以在模型或视图内部添加事件,但如果您需要真正的控制器逻辑,则应向UI组件添加默认处理程序,这些处理程序应在模型或视图内部确定,然后在控制器中使用自定义逻辑覆盖它们,或者,如果它们不是模型的一部分并且是自定义视图组件,则添加视图内部。再次检查spark皮肤。非常感谢您的关注。如果我感兴趣的唯一事件是KeyDown和MouseMove,那么只需添加到视图中即可:addEventListenerKeyboardEvent.KEY_DOWN,controller.keyDownHandleryes,这样您就可以定义调用方式,而不是controller的逻辑,您是对的别忘了接受答案和评分注释,因为模型不必知道视图有什么gui?如果我们只讨论数据,那么是的,但我们已经实现了UI组件,您应该有地方来描述它们,例如查看flex 4 spark皮肤,非常好的体系结构,其中作为mxml视图扩展的模型,您可以在模型或视图内部添加事件,但是如果您想要真正的控制器逻辑,您应该向UI组件添加默认处理程序,这些处理程序应该在模型或视图内部确定,然后在控制器中使用自定义逻辑覆盖它们,或者如果它们不是模型的一部分并且是自定义视图组件,则添加视图内部。再次检查spark皮肤。非常感谢您的关注。如果我感兴趣的唯一事件是KeyDown和MouseMove,那么只需添加到视图中即可:addEventListenerKeyboardEvent.KEY_DOWN,controller.keyDownHandleryes,这样您就可以定义调用方式,而不是controller的逻辑,您是对的别忘了接受答案和评价