Extjs4.2或以上 使用自定义事件时报错问题

it2022-05-08  7

最近使用了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

最新回复(0)