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

时间:2014-01-15 03:30:58

标签: ajax extjs constructor singleton sencha-touch-2

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

如果我在构造函数中删除了Ajax调用,我的应用程序将加载而没有任何错误。

然后,如果我在我的应用程序启动后调用的另一个函数内部进行Ajax调用,则可以正常工作。所以我假设在调用构造函数时尚未加载Ext.Ajax。我尝试将使用参数添加到我的课程中,但它不起作用。

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             
        }); 
    }
});

1 个答案:

答案 0 :(得分:0)

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

requires: ['Ext.Ajax']

可能发生的事情是,在此过程中还需要其他内容Ext.Ajax,因此loadData()请求可以访问它而MyApp.utils.PostalCode没有明确要求首先加载它。