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

使用しているExtJS3のバージョンは何ですか?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 に答える