Sencha touch 2 Sencha Touch 2在视图和控制器之间共享事件

Sencha touch 2 Sencha Touch 2在视图和控制器之间共享事件,sencha-touch-2,Sencha Touch 2,我知道如何在视图和控制器之间共享应用程序中的一些事件。 例如,事件:“来自服务器的更新可用”。 为此,我可以在控制器中使用fireEvent(“updatesAvailable”),但这会使其他组件订阅触发该事件的特定控制器 我想要的是有一个singleton对象,它将保留所有应用程序逻辑事件订阅 目前,我发现我可以通过拥有一个共享视图实例并订阅所有实例来解决这个问题。但我想知道的是,是否有一个现成的事件调度器,它可以了解应用程序内部的所有事件 据我所知,您想使用“事件总线”模式吗? 您可以使用

我知道如何在视图和控制器之间共享应用程序中的一些事件。 例如,事件:“来自服务器的更新可用”。 为此,我可以在控制器中使用fireEvent(“updatesAvailable”),但这会使其他组件订阅触发该事件的特定控制器

我想要的是有一个singleton对象,它将保留所有应用程序逻辑事件订阅


目前,我发现我可以通过拥有一个共享视图实例并订阅所有实例来解决这个问题。但我想知道的是,是否有一个现成的事件调度器,它可以了解应用程序内部的所有事件

据我所知,您想使用“事件总线”模式吗? 您可以使用每个ST2应用程序中存在的“全局”和单个对象-Ext.Viewport。至少我正在我的应用程序中创建,到目前为止,没有什么是不好的。 注意,创建事件处理程序的最佳位置是控制器的init()方法

在另一个控制器(或任何视图)中,您可以编写

 addActivityTypeTap: function (record) {
      ....
      Ext.Viewport.fireEvent('addactivitytype', {
        record: record
      });
 }

作为我的实践,我总是创建一个名为
GlobalController.js
的控制器,将所有“全局”事件侦听器放在那里,并在相应的处理程序中调用其他人的必要函数,例如:
Ext.getApplication().getController('controller_1').function_1()
Ext.getApplication().getController('controller_2').function()
,等等。
 addActivityTypeTap: function (record) {
      ....
      Ext.Viewport.fireEvent('addactivitytype', {
        record: record
      });
 }