3

Sencha Touch 2.0.0を使用して、クラスの動作をオーバーライドしようとしています。
私はこれらのドキュメントとこのテーマに関するこのフォーラムの投稿を
フォローしていますが、次のコードを使用しています:

Ext.define('MP.service.Override', {
    extend: 'Ext.Base',
    override: 'Ext.Ajax',

    request: function(cfg) {
        console.log('overriden');
        this.callOverridden(arguments);
    }
});

コンソールに次のエラーが表示されます。

Uncaught TypeError: Object [object Object] has no method 'override' 

どんな助けでも大歓迎です

4

1 に答える 1

0

Ext.AjaxクラスはExt.data.Connectionクラスのシングルトンインスタンスであるため、この方法でオーバーライドすることはできません。

'適切な'オーバーライドを作成するのではなく、シングルトンの関数を置き換えることができます。

1つの方法は、次のことを行うことです。

Ext.Ajax.request = Ext.Function.createInterceptor(Ext.Ajax.request, function(){ 
    console.log('override');
});

これに関する唯一の問題は、元の関数の前に新しいコードを追加することしかできないということですが、同様の手法でこの問題を回避できます。

関連する質問はここにあります:sencha touch override ext.ajax

于 2014-03-26T09:11:25.397 に答える