2012-04-26 101 views
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); 
    } 
}); 

私はコンソールでこのエラーを取得:
私は、これらのdocsし、次のコードでこのforum post on the subject
しかし、次の午前すべてのヘルプははるかに高く評価されるだろう

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

答えて

0

Ext.AjaxクラスはExt.data.Connectionクラスのシングルトンインスタンスなので、このようにオーバーライドすることはできません。

「適切な」上書きを作成するのではなく、シングルトンの機能を置き換えることができます。次の操作を行うことであろう

一つの方法:

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

これで唯一の問題は、あなただけ前に、元の関数あなたの新しいコードを追加することができますが、同様の技術は、この問題を丸めるあなたを得ることができるということです。

関連する質問はこちらからご覧ください。sencha touch override ext.ajax

関連する問題