`
xiaoyongzeng
  • 浏览: 14465 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

有关自定义继承EXT观察者事件对象一些问题

阅读更多
在用EXT的过程中,有时会自定义封装一些对象,为了让这个对象有事件处理的能力,简便起见,往往会让这个对象继承Ext.util.Observable事件对象。便在使用的过程中,要注意一个问题,具体如下:

一、问题代码

          Ext.namespace("js.main");
var x = js.main;

x.Test = function(_cfg){
this.list = [];
Ext.apply(this,_cfg || {});
this.addEvents("onSuccess");

};
x.Test.prototype.write = function(_arg){
document.writeln(_arg);
};
x.Test.prototype.testA = function(){
this.write("this->list.length: "+this.list.length);

};
Ext.extend(x.Test,Ext.util.Observable);

    这段代码,初看上去,没有问题,但当实例出一个Test对象,调用testA方法时,会出现此方法没有定义的问题。
    看了其它EXT组件继承观察者事件对象才知道,问题的原因应该出现在,当自定义的对象继承observable时,已经破坏了原始Test对象的原始链,好在此种继承机制提供了一种修复的方式,如接下来所示。


二、正确代码

    Ext.namespace("js.main.Test");
var x = js.main;

x.Test = function(_cfg){
this.list = [];
Ext.apply(this,_cfg || {});
this.addEvents("onSuccess");

};
Ext.extend(x.Test,Ext.util.Observable,{
write : function(_arg){
document.writeln(_arg);
},
testA : function(){
this.write("u-------this->list.length: "+this.list.length);
this.fireEvent("onSuccess");
}
});

  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics