我有问题。我在我的应用程序可观察模式中使用来管理自定义事件:
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;
}
}
}
}
我还有一个大的自定义组件(称为'Big'先生),它包含子自定义组件。而这些孩子互相开火定制活动。在我的申请中我可以拥有超过1个'先生'的问题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);
...
}
}
例如,我有2个'先生'大'。我需要做什么,如果我想要'先生的孩子1的customEvent1 '1先生的孩子2不会解雇Big 1' Big 2'。
我的解决方案之一是: 在执行任何操作之前,使用Mr.Bigs及其子组件和处理程序的唯一ID:
if (this.UID != data.UID)
{
return;
}
但是:如果我有3个或更多'先生' Bigs'和他们每个人都有9个孩子,我的自定义事件会被解雇很多次,我认为我的应用速度有问题。
请帮帮我!