1

我正在使用 extjs 3 构建自己的课程(许可证问题)

Ext.ux.MyClass = Ext.extend(Ext.Container, {

       initComponent: function() {       
                this.button = new Ext.Button({
                                       scope:this,
                                       text:'my button', 
                                       handler: function() {
                                                     alert(0);
                                                     this.fireEvent('myevent');
                                       }
                });

                this.addEvents('myevent');
       }    
});


//in the code:

var obj = new Ext.ux.MyClass(...);

obj.on('myevent', function () {alert(1);});

事件未触发代码未给出错误我可以看到 Alert(0) 但不是 Alert(1);

我尝试了监听器,但也没有工作,this.fireEvent 返回 true。

谢谢你的帮助

4

1 回答 1

2

您使用的是哪个版本的 ExtJS 3?3.0、3.1 还是 3.4?

如果它是 3.4,那么它似乎对我有用。我添加了一些额外的代码只是为了让按钮呈现,但对我来说似乎没问题。

我使用的最终代码是:

Ext.onReady(function(){

    Ext.ux.MyClass = Ext.extend(Ext.Container, {
        initComponent: function() {
            this.button = new Ext.Button(
            {
                renderTo: document.body,
                scope:this,
                text:'my button', 
                handler: function() {
                    alert(0);
                    this.fireEvent('myevent');
                }
            });

            this.addEvents('myevent');
        }

    });

    var obj = new Ext.ux.MyClass();

    obj.on('myevent', function () {alert(1);});
});

在这里查看 jsfiddle:http: //jsfiddle.net/J9YcL/

如果这有什么不同,我正在 Chrome 中运行。

于 2013-03-06T21:30:21.117 回答