【问题标题】:Override fail with error覆盖失败并出现错误
【发布时间】:2012-04-26 06:38:51
【问题描述】:

使用 Sencha Touch 2.0.0 我试图覆盖一个类的行为。
我正在关注这些docs 和这个forum 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' 

任何帮助将不胜感激

【问题讨论】:

    标签: sencha-touch sencha-touch-2


    【解决方案1】:

    Ext.Ajax 类是 Ext.data.Connection 类的单例实例,因此不能以这种方式覆盖它。

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 2013-07-18
      • 2021-10-12
      • 2020-10-23
      • 2020-07-20
      • 2011-05-25
      相关资源
      最近更新 更多