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

What is the controller responsibility in ExtJS? Events in instance of Ext.window.Window?

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

这是不好的做法吗?如果事件发生在 Window(Ext.window.Window 的实例)。

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

我不确定这样做的正确方法,但我想我必须在它的事件中从我的 "window" 获得对控制器的引用,然后在控制器上调用 fireEvent?

这里的最佳做法是什么?

我正在使用 ExtJS 4.2,所以不能使用 MVVM。

ExtJS 似乎让我直接在 "Components" 中实现事件,但遵循 MVC 模式,这不是坏习惯吗,一切都应该真正通过控制器。

控制器或视口应处理该事件。 您不需要在 window.

中引用控制器

如果您想要自定义事件,您需要从 window 内部触发事件,例如:

this.fireEvent("myCustomEvent"[,elementThatTriggeredTheEvent]);

然后您需要使用对 window:

的引用来监听控制器内部的事件
yourWindow.on("myCustomEvent",this.myCustomEventHandler[,scope]);

还有一些方法可以在不引用事件触发元素的情况下监听事件。

编辑-关于您的评论:

如果您需要对 window 内的元素进行后期布局,那么我会在 window 内进行。如果您想对 window 中未定义的元素执行操作,则让实例化元素的控制器处理它。在 ExtJS 5 中有一个叫做 ViewController 的东西。我不知道它是否已经在4.2中。您可以利用 ViewController 拆分发生在 window 中的内容。这是一个 link:

https://www.sencha.com/blog/using-viewcontrollers-in-ext-js-5/

编辑 2:

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