动态创建组件时的ExtJS4自定义事件

动态创建组件时的ExtJS4自定义事件,extjs,extjs4,custom-component,custom-event,Extjs,Extjs4,Custom Component,Custom Event,我有个问题。我在应用程序中使用可观察模式来管理自定义事件: var app = {}; app.Event = { _observers:[], subscribe:function (event, obj) { var c = obj || null; if (c) { this._observers.push({event:event, obj:obj, id:obj.id }); } },

我有个问题。我在应用程序中使用可观察模式来管理自定义事件:

var app = {};
app.Event =
{
    _observers:[], 
    subscribe:function (event, obj) {
        var c = obj || null;
        if (c) {
            this._observers.push({event:event, obj:obj, id:obj.id }); 
        }
    },

    fire:function (event, data) {
        var item;
        for (var i in this._observers) { 
            if (this._observers[i].event == event)
            {
                item = this._observers[i];
                item.obj.fireEvent(event, item.obj, data); 
            }
        }
    },


    unsubscribe:function (event, obj) {
        for (var i in this._observers) { 
            if (this._observers[i].id == obj.id) 
            {
                this._observers.splice(this._observers[i], 1)
                break;
            }
        }
    }
}
我还有一个大的自定义组件(称之为“大先生”),它包含子自定义组件。而这些孩子们互相点燃了定制的事件。问题是,在我的应用程序中,我可以有多个“Mr.Big”实例,并且每个“Mr.Big”都将动态创建。Childs也是动态创建的

Ext.define('Mr. Big',{
 extend:'ME.view.portal.portalItems.base.Panel',
...
items: ['child 1','child 2']
}); 

Ext.define('child 1',{
...
 listeners:{
customEvent1: function(ev, data)
{
...
}
initComponent: function()
{
...
app.Event.subscribe('customEvent1',this);
...
}
}

Ext.define('child 2',{
...
 listeners:{
customEvent2: function(ev, data)
{
   app.Event.fire('customEvent1',anyData)
}
initComponent: function()
{
...
app.Event.subscribe('customEvent2',this);
...
}
}
例如,我有两个“大先生”的例子。我需要做的是,如果我希望“大1先生”的孩子1的customEvent1不会被“大2先生”的孩子2解雇

我的解决方案之一是: 在执行任何写入操作之前,请为Mr.Bigs及其子组件和处理程序使用唯一ID:

 if (this.UID != data.UID)
 {
     return;
 }
但是:如果我有3个或更多的“Big先生”,并且每一个都有9个孩子,那么我的自定义事件将被解雇很多次,我认为我的应用程序速度有问题


请帮帮我

为什么要在应用程序级别控制这些事件?如果您使用的是MVC或直接从它的类,那么最好将这些范围限定在一个控制器中,并且只在确实需要时触发应用程序事件。