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 类的单例实例,因此不能以这种方式覆盖它。

您可以替换单例的功能,而不是创建“适当的”覆盖。

一种方法是执行以下操作:

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

唯一的问题是您只能在原始函数之前添加新代码,但类似的技术可以帮助您解决这个问题。

可以在这里找到一个相关的问题:sencha touch override ext.ajax

于 2014-03-26T09:11:25.397 回答