Javascript ExtJS中的控制器职责是什么?Ext.window.window实例中的事件?

Javascript ExtJS中的控制器职责是什么?Ext.window.window实例中的事件?,javascript,extjs,extjs4,extjs4.2,extjs5,Javascript,Extjs,Extjs4,Extjs4.2,Extjs5,目前正在使用ExtJS 4,我正在尝试使用控制器来实现所有事件,但我正在窗口本身中处理一些事件,即关闭和销毁事件。我需要在这里执行一些代码 这是坏习惯吗?如果事件发生在窗口中(Ext.Window.Window的实例) 我应该将这些事件转发给控制器来处理吗 我不确定这样做的正确方法,但我认为我必须从控制器事件中的“窗口”获取对控制器的引用,然后在控制器上调用fireEvent 这里的最佳实践是什么 我使用的是ExtJS4.2,因此无法使用MVVM ExtJS似乎允许我直接在“组件”中实现事件,但

目前正在使用ExtJS 4,我正在尝试使用控制器来实现所有事件,但我正在窗口本身中处理一些事件,即关闭和销毁事件。我需要在这里执行一些代码

这是坏习惯吗?如果事件发生在窗口中(Ext.Window.Window的实例)

我应该将这些事件转发给控制器来处理吗

我不确定这样做的正确方法,但我认为我必须从控制器事件中的“窗口”获取对控制器的引用,然后在控制器上调用fireEvent

这里的最佳实践是什么

我使用的是ExtJS4.2,因此无法使用MVVM


ExtJS似乎允许我直接在“组件”中实现事件,但遵循MVC模式,这是一种不错的做法,一切都应该真正通过控制器。

控制器或视口应该处理事件。 您不需要在窗口内引用控制器

如果需要自定义事件,则需要从窗口内部触发事件,如:

this.fireEvent("myCustomEvent"[,elementThatTriggeredTheEvent]);
然后,您需要使用对窗口的引用来侦听控制器内的事件:

yourWindow.on("myCustomEvent",this.myCustomEventHandler[,scope]);
还有一些方法可以在不引用事件触发元素的情况下侦听事件

编辑-关于您的评论:

如果你需要做一些关于窗口内元素的后期布局的事情,那么我会在窗口内做。如果您想对窗口中未定义的元素进行处理,那么让实例化元素的控制器来处理它。在ExtJS5中,有一种称为ViewController的东西。我不知道它是否已经在4.2中了。您可以利用ViewController分割窗口中发生的内容。这里有一个链接:

编辑2:


如果您不需要自定义事件,只需使用控制器收听窗口在重要场合已经抛出的事件。

我还必须实现窗口的后布局,因为我需要做更多的事情。我目前正在“窗口”中处理此问题,我是否应该将其转发给控制器,让控制器操纵组件,而不是公司操纵自身?谢谢!这个语法正确吗?这个.firevent(“myCustomEvent”[,触发事件的元素]);和yourWindow.on(“myCustomEvent”,this.myCustomEventHandler[,scope])?方括号表示可选?方括号表示可选。但您并不是只绑定到一个参数。你可以传递你想要的。查看:并搜索fireEvent。