2

Ext.grid.column.Column クラスの initComponent( ) メソッドをオーバーライドしたい。しかし、それらすべての行を実行する方法があります。基本的には、要素からリスナーを削除し、他の要素に割り当てたいと考えています。

Ext.override(Ext.grid.column.Column, 
{     
    initComponent: function(){
         .
         .  //All lines are as it is till me.callParents(); 
         .
         .
         .
         .
         .
         .
         .
         // Initialize as a HeaderContainer
         me.callParent(arguments);

        me.on({      <<<------------------------------Do not need these.
            element:  'el',
            click:    me.onElClick,
            dblclick: me.onElDblClick,
            scope:    me
        });
        me.on({      <<<------------------------------Do not need these.
            element:    'titleEl',
            mouseenter: me.onTitleMouseOver,
            mouseleave: me.onTitleMouseOut,
            scope:      me
        });

    }

}

「el」と「titleEl」にリスナーを付けたくないので、これらの行を削除します。ただし、リスナーを追加する方法もあります。また、AfterRender 関数に me.un() を記述します。「El」と「titleEl」にリスナーを追加しても

誰か私が間違っているところを教えてもらえますか?????

4

1 に答える 1

2

を使用する代わりに、 をExt.override使用Ext.defineしてサブクラスを作成します。メソッドを再定義すると、 を使用してスキップinitComponentできます。this.superclass.superclass.initComponent.callExt.grid.column.Column#initComponent

Ext.define('MyApp.grid.column.Column', {
    extend: 'Ext.grid.column.Column',
    alias:  'widget.mycolumn',

    initComponent: function(){
        // Pre-initComponent from column class here

        // Ext.grid.header.Container#initComponent
        this.superclass.superclass.initComponent.call(this);

        // Do optional stuff here
    }
});

次に、新しい列を作成するときにxtype: 'mycolumn'、必要に応じて通常の列を使用しながら、独自の実装を使用します。

于 2013-04-29T14:27:59.493 に答える