[英]What is the controller responsibility in ExtJS? Events in instance of Ext.window.Window?
当前正在使用ExtJS 4,我正在尝试使用控制器来实现所有事件,但是在Window本身中要处理的一些事件是close和destroy事件。 我需要在这里执行一些代码。
这是不好的做法吗? 如果事件在Window中发生(Ext.window.Window的实例)。
我是否应该将这些事件转发给控制器进行处理?
我不确定执行此操作的正确方法,但是我想我必须从事件的“窗口”中获取对控制器的引用,然后在控制器上调用fireEvent?
最佳做法是什么?
我正在使用ExtJS 4.2,因此无法使用MVVM。
ExtJS似乎可以让我直接在“组件”中实现事件,但是遵循MVC模式,这不是一个坏习惯,并且所有内容都应该真正通过控制器。
控制器或视口应处理事件。 您不需要在窗口内引用控制器。
如果要自定义事件,则需要从窗口内部触发事件,例如:
this.fireEvent("myCustomEvent"[,elementThatTriggeredTheEvent]);
然后,您需要使用对窗口的引用来监听控制器内的事件:
yourWindow.on("myCustomEvent",this.myCustomEventHandler[,scope]);
还有一些无需引用事件触发元素即可侦听事件的方法。
编辑-关于您的评论:
如果您需要对窗口内的元素进行事后布局方面的工作,那么我将在窗口内进行。 如果要对窗口内未定义的元素进行处理,则让实例化元素的控制器处理它。 在ExtJS 5中,有一个叫做ViewController的东西。 我不知道它是否已经在4.2中。 您可以利用ViewController拆分窗口中发生的事情。 这是一个链接:
https://www.sencha.com/blog/using-viewcontrollers-in-ext-js-5/
编辑2:
如果您不希望自定义事件,只需与控制器一起监听在重要场合窗口已经抛出的事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.