2012-04-26 84 views
3

使用Sencha Touch 2.0.0我試圖重寫一個類的行爲。
我下面這些docsforum post on the subject
但與下面的代碼:覆蓋失敗,錯誤

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' 

任何幫助,將不勝感激

回答

0

Ext.Ajax類是Ext.data.Connection類的單例實例,因此不能用這種方式重寫。

您可以替換單例函數,而不是創建「適當」覆蓋。

一種方法是做到以下幾點:

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

與此唯一的問題是,你只能之前添加新的代碼原有的功能,但類似的技術可以幫你圓這個問題。

有關的問題可以在這裏找到:sencha touch override ext.ajax