Ext.Template не определен - PullRequest
       1

Ext.Template не определен

1 голос
/ 02 ноября 2011

У меня проблемы с подготовкой приложения к развертыванию. Я использую ext-dev.js и имею следующие компоненты:

Ext.define(myNameSpace.myComponentName, {
    requires: ['Ext.XTemplate'],
    tpl: new Ext.XTemplate('someTemplate')
})

При запуске приложения выдает

Ext.XTemplate не является конструктором

У вас есть решение для этого?

1 Ответ

2 голосов
/ 02 ноября 2011

Вы не можете определить Ext.XTemplate inline, потому что он еще не был получен с сервера Ext.Loader, который обрабатывает загрузку зависимостей. Есть два решения:

// If you really want to add it to the prototype, but adding objects to the 
// prototype is usually a bad idea since they are shared by all instances 
// In this case, it may be ok, since there isn't much you can change about a
// template after you create it
Ext.define('myNameSpace.myComponentName', {
    requires: ['Ext.XTemplate'],
}, function() {
   // This callback is for when all the dependencies are loaded
   myNameSpace.myComponentName.prototype.tpl = new Ext.XTemplate('someTemplate')
});

// Or just define it in initComponent, since you shouldn't instantiate it
// until after Ext.onReady is called (which means all dependencies are loaded)
Ext.define('myNameSpace.myComponentName', {
    requires: ['Ext.XTemplate'],
    initComponent: function() {
       this.tpl = new Ext.XTemplate('someTemplate');
       this.callParent();
    }
});

ОБНОВЛЕНИЕ Я действительно забыл перечислить еще одну возможность, которая может работать, то есть не использовать new, использовать Ext.create('Ext.XTemplate', args)'. Проблема с Ext.create заключается в том, что он будет блокироваться до тех пор, пока не будет загружена Ext.XTemplate (и зависимости). Я бы по-прежнему использовал один из двух подходов, упомянутых вверху

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...