大規模なExtJS3コードベースを継承し、Ext.grid.CellSelectionModelのbeforecellselectの「基本」オーバーライドがあります。次のようにその後ExtJSイベントの再定義と以前の実装への委任
Ext.override(Ext.grid.CellSelectionModel, {
init:function() {
Ext.grid.CellSelectionModel.superclass.init.apply(this, arguments);
if (this.unselectableColumns || this.visuallyMimicRowSelection || this.colSpecificHandlers){
this.on('beforecellselect', function(selModel, rowIndex, columnIndex){
//etcetera
しかし、我々はCellSelectionModelをインスタンス化され、その上にbeforecellselectリスナーを指定:私は、コードの巨大な帯状を切り捨てていますが、これは一般的なアイデアを提供しなければならない
var sm = new Ext.grid.CellSelectionModel({
listeners: {
beforecellselect : {
fn: function(selModel, rowIndex, colIndex) {
//etcetera
問題新しいCellSelectionModelインスタンスのリスナー内から、オーバーライドで定義されたリスナーも呼び出す必要があります。 ExtJSのは、同じ名前のイベントリスナーの配列を保持するように思われるので、以下のように、私は委任することができるよ:
selModel.events.beforecellselect.listeners[1].fn.apply(selModel, arguments);
[OK]を、私は、コードインデックスをハードいけない知っています。しかしそれに加えて、これを行うにはより良い、より多くのExtJS-yの方法がありますか?あなたのケースでは
リスナーが追加されます(リスナーはあなたが言及しているリスナー配列にあるため、置き換えられません)。元のリスナーを呼び出すために何もする必要はありません。イベントが発生すると、すべてのリスナーが呼び出されます。オーバーライドにはおそらく何か問題があると私は思います。 – pakman