我有一个定义如下的可观察对象:
Ext.define ('MyObject', {
mixins: {
observable: 'Ext.util.Observable'
} ,
constructor: function (cfg) {
this.initConfig (cfg);
this.mixins.observable.constructor.call (this, cfg);
...
}
});
然后,我创建该对象的实例并附加一些监听器:
var obj = Ext.create ('MyObject', {...});
obj.on ({
first: function () {...} ,
second: function () {...} ,
third: function () {...} ,
fourth: function () {...}
});
最后,我要销毁“obj”实例,但此时我必须保存之前附加的所有监听器,因为我很生气,我需要创建另一个“MyObject”实例,使用“obj”的相同配置,包括监听器。
因此,问题是:如何保存可观察对象的每个监听器?
非常感谢!
最佳答案
您可以尝试为您的对象创建一个 getListeners() 方法:
Ext.define ('MyObject', {
...
getListeners: function() {
var me = this,
l = {};
for(var event in me.hasListeners) {
Ext.each(me.events[event].listeners, function(listener) {
l[event] = listener.o[event];
});
}
return l;
}
});
...
var listeners = obj.getListeners();
obj.destroy();
obj2.on(listeners);
参见 jsfiddle:http://jsfiddle.net/8GMsp/
注意:我还没有尝试在实际应用中使用它。可能需要修改。
关于javascript - ExtJS 4 获取可观察对象的每个监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225268/