zoukankan      html  css  js  c++  java
  • Extjs4.2或以上 使用自定义事件时报错问题

    最近使用了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');
  • 相关阅读:
    json.parse 与 json.stringfy
    window.self ->window.top->window.parent
    Matrix探究细谈
    android TypedValue.applyDimension()的探究
    Android判断屏幕锁屏的步骤总结
    Intent和IntentFilter详解
    android中活动的启动模式
    android中的显式与隐式Intent
    android中的Pending.getActivity()参数详解
    android之传感器
  • 原文地址:https://www.cnblogs.com/zzbo/p/5387368.html
Copyright © 2011-2022 走看看