代码之家  ›  专栏  ›  技术社区  ›  Martin

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

  •  1
  • Martin  · 技术社区  · 10 年前

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

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

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

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

    这里的最佳实践是什么?

    我正在使用ExtJS 4.2,因此无法使用MVVM。

    ExtJS似乎让我直接在“组件”中实现事件,但遵循MVC模式,这不是一个坏的做法,所有事情都应该真正通过控制器。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Lucian Depold    10 年前

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

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

    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:

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