2014-01-15 4 views
0

С Sencha Touch я определил одноэлементный класс с вызовом Ajax внутри его конструктора. Когда мои приложения запускаются, я получаю сообщение об ошибке: Не удается вызвать метод «запрос» неопределенного из строки с «Ext.Ajax.request».Выполнение вызова Ajax внутри конструктора класса Singleton

Если я удалю вызов 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    
     }); 
    } 
}); 
+0

@jprofitt: Он работает, спасибо! Вы можете сделать ответ, и я выберу его в качестве правильного ответа. – fvaliquette

ответ

0

Вместо того чтобы использовать uses, вы хотите использовать requires, чтобы указать, что Ext.Ajax будет необходимо до того, как создается этот класс.

requires: ['Ext.Ajax'] 

Что, вероятно, происходит, что-то еще по пути требуется Ext.Ajax, поэтому loadData() запрос имел к нему доступ без MyApp.utils.PostalCode явно просить, чтобы он был загружен первым.

Смежные вопросы