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

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

本文关键字:window Window 事件 Ext 实例 是什么 控制器 ExtJS      更新时间:2023-09-26

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

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

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

我不确定这样做的正确方式,但我认为我必须从我的"窗口"在它的事件,然后调用控制器上的fireEvent对控制器的引用?

这里的最佳实践是什么?

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

ExtJS似乎让我实现的事件直接在"组件",但以下MVC模式,这是不是不好的做法,一切都应该真正通过控制器

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

如果你想要自定义事件,你需要从窗口内部触发事件,像

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

然后你需要使用对窗口的引用来监听控制器内部的事件:

yourWindow.on("myCustomEvent",this.myCustomEventHandler[,scope]);

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

编辑-关于您的评论:

如果你需要在afterlayout上做一些关于窗口内元素的事情,那么我会在窗口内做。如果你想对没有在窗口中定义的元素做一些事情,那么让实例化元素的控制器来处理它。在ExtJS 5中有一个叫做ViewController的东西。我不知道它是否已经在4.2了。你可以利用ViewController来拆分发生在你窗口中的东西。这里有一个链接:

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

编辑2:

如果您不想要自定义事件,只需与控制器一起侦听窗口已经在重要场合抛出的事件