最近使用了extjs 自定义事件模型,代码如下:
function Person(name) { this.name = name; this.addEvents('walk'); } Ext.extend(Person, Ext.util.Observable, { info: function() { return 'info:' + this.name; } }); var zzbo = new Person('zzbo'); zzbo.on('walk', function() { console.log('walk'); }); zzbo.fireEvent('walk');以上代码在 extjs4.0 版本是完全没有问题的,但是我使用了extjs4.2版本。
运行后得到报错信息:
Uncaught TypeError: Cannot read property '_incr_' of undefined然后我换到extjs6.0,据说6.0已经把 addEvents 废弃了,那么我把 this.addEvents('walk'); 这句代码删除掉,也报出同样的错误信息。
试用不同方式调试后发现,需要手动初始父类的构造函数,就可以解决问题。
this.superclass.constructor.apply(this, arguments);即完整代码如下:
function Person(name) { this.name = name; this.addEvents('walk'); //ext 5.0或6.0 则不需要这句 this.superclass.constructor.apply(this, arguments); //手动初始化父类构造函数 } Ext.extend(Person, Ext.util.Observable, { info: function() { return 'info:' + this.name; } }); var zzbo = new Person('zzbo'); zzbo.on('walk', function() { console.log('walk'); }); zzbo.fireEvent('walk');
转载于:https://www.cnblogs.com/zzbo/p/5387368.html
相关资源:基于Extjs 4.2的通用权限管理系统,通用后台模板,EF MVC Extjs 4.2