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

时间:2012-04-28 11:34:30

标签: sencha-touch-2

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

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

目前我看到我可以通过拥有一个共享视图实例并订阅所有内容来解决问题。但我想知道是否有一个开箱即用的事件调度程序能够了解应用程序内的所有事件。

1 个答案:

答案 0 :(得分:3)

据我了解你想使用'Event Bus'模式? 您可以使用每个ST2应用程序中存在的“全局”和单个对象 - Ext.Viewport。至少我在我的应用程序中创建,直到现在一切都没有坏。 注意,创建事件处理程序的最佳位置是controller的init()方法。

Ext.define('Myapp.controller.ActivitiesController', {

extend : 'Ext.app.Controller',

requires : [],
    config: {
        refs: {
            myview: 'myview'
        }
...
    init: function () {
    var me = this;

    Ext.Viewport.on({
        scope: this,
        addactivitytype: function (config) {
                    var myview = me.getMyview(),
                        record = config.record
...

          });
     }
});

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

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