Экстджс 5.Ext.application не является функцией.Почему?

StackOverflow https://stackoverflow.com//questions/25038776

  •  21-12-2019
  •  | 
  •  

Вопрос

Я получаю ошибку в консоли: Ext.application is not a function.Мой index.html файл содержит этот код:

...
<link rel="stylesheet" type="text/css" href="/ext-5.0.1/packages/ext-theme-neptune/build/resources/ext-theme-neptune-all.css" />
<script src="/ext-5.0.1/ext-all-debug.js"></script>    
<script type="text/javascript" src="app.js"></script>    
...

Пока app.js есть только этот код, взятый из одной демо:

Ext.application({
name: 'AM',
appFolder: 'app',
launch: function() {
    Ext.create('Ext.container.Viewport', {
        layout: 'fit',
        items: [{
                xtype: 'panel',
                title: 'Users',
                html : 'List of users will go here'
        }]
    });
}
});

РЕДАКТИРОВАТЬ

Кстати, даже пробег "официальный" /ext-5.0.1/examples/app/simple/simple.html Я получаю ту же ошибку.Почему это?

Это было полезно?

Решение

Завершить вызов Ext.application внутри Ext.onReady блокировать.

// app.js
Ext.onReady(function() {
  Ext.application({
    name: 'AM',
    appFolder: 'app',
    launch: function() {
      Ext.create('Ext.container.Viewport', {
        layout: 'fit',
        items: [{
          xtype: 'panel',
          title: 'Users',
          html : 'List of users will go here'
        }]
      });
    }
  });
})

Причина, по которой это необходимо, кстати, заключается в том, что файлы ext-all-debug.js не содержат всего ExtJS.Он содержит код начальной загрузки — код, который знает, как получить все остальное.Частью этого «всего остального» является код приложения.Поэтому, пока это не будет запущено, Ext.application не существует.

Пример портала, который вы упомянули, работает, потому что он использует результат sencha app build - microloader.js.При этом загружается полная версия ExtJS (точнее, части, используемые в приложении), и, таким образом, Ext.application уже определен к моменту его использования.(То же самое и с Sencha Fiddle — там вам тоже не понадобится Ext.onReady)

Другие советы

Вместо

<script src="/ext-5.0.1/ext-all-debug.js"></script>

Вы должны использовать

<script src="/ext-5.0.1/build/ext-all-debug.js"></script>

Второй содержит все компоненты и классы, как и ожидалось.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top