在单例类构造函数中进行Ajax调用

在单例类构造函数中进行Ajax调用,ajax,extjs,constructor,singleton,sencha-touch-2,Ajax,Extjs,Constructor,Singleton,Sencha Touch 2,使用Sencha Touch,我定义了一个单例类,在其构造函数中使用Ajax调用。当我的应用程序启动时,我收到错误消息:无法从带有“Ext.Ajax.request”的行调用未定义的方法“request” 如果我删除构造函数中的Ajax调用,我的应用程序将无误加载 然后,如果我在应用程序启动后调用的另一个函数中进行Ajax调用,它就会正常工作。因此,我假设调用构造函数时Ext.Ajax尚未加载。我试图将uses参数添加到我的类中,但它不起作用 Ext.define('MyApp.utils.Po

使用Sencha Touch,我定义了一个单例类,在其构造函数中使用Ajax调用。当我的应用程序启动时,我收到错误消息:无法从带有“Ext.Ajax.request”的行调用未定义的方法“request”

如果我删除构造函数中的Ajax调用,我的应用程序将无误加载

然后,如果我在应用程序启动后调用的另一个函数中进行Ajax调用,它就会正常工作。因此,我假设调用构造函数时Ext.Ajax尚未加载。我试图将uses参数添加到我的类中,但它不起作用

Ext.define('MyApp.utils.PostalCode', {
    singleton: true,
    config : {
        postalCodesHashMap : null,  
    },  
    uses : 'Ext.Ajax',
    constructor: function(config) {
        this.initConfig(config);
        Ext.Ajax.request({
            //will not work        
        }); 
    },  
    loadData : function() {
        Ext.Ajax.request({
            //will work             
        }); 
    }
});

不要使用
uses
,而是要使用
requires
来指示在创建此类之前需要
Ext.Ajax

requires: ['Ext.Ajax']

可能发生的情况是,沿途还需要
Ext.Ajax
,因此
loadData()
请求可以访问它,而不需要
MyApp.utils.PostalCode
明确要求先加载它。

@jprofitt:它很有效,谢谢!你可以回答,我会选择它作为正确的答案。