2013-11-21 4 views
3

Я хочу, чтобы все файлы после входа в систему. В моем контроллере У меня есть views:[...views...], stores: [...stores...] и models:[...models...].Ext.syncRequire() рекурсивно загружает файлы?

Моего ожидания было, если бы я Ext.syncRequire('MyApp.controller.MyController');, что она будет загружать вида, магазинов и модели внутри этого контроллера, а также, но моя консоль говорит, что она загрузка взгляды, магазины и модели синхронно.

Если я положил Ext.syncRequire([controller, views, stores, models]);, я снова не получаю предупреждающее сообщение.

Мой вопрос: как я могу загрузить только контроллер (синхронно), и я бы получил все, что указано в контроллере, загруженном также (указанные магазины, модели, виды)?

ответ

2

Это произойдет только с зависимостями, определенными в массиве requires, что является единственным, что знает загрузчик.

views, models и stores обрабатываются только классом приложения, что означает контроллер, который вызывается с использованием экземпляра приложения. Если вам нужен контроллер самостоятельно, не будет ничего, что разрешит эти настраиваемые зависимости.

Вот способ, как это можно сделать:

  • Получить «догружать» обратный вызов для извлечения конфигурации контроллера из classmanager.
  • Создайте новый список требований из представлений, магазинов и моделей.
  • Загрузите его и создайте экземпляр контроллера в обратном вызове завершения загрузки этого запроса.
+0

Итак, ваше предложение состоит в том, чтобы поместить все в 'требует: [магазины, модели, виды]'? – NullCod3

+0

@ NullCod3 Контроллер предназначен для загрузки экземпляром приложения не вами. Причины всего этого лежат глубже в классе и загрузчике системы и имеют смысл. Так что да, одно решение добавило бы все в требуемый массив, чтобы другой увидел мое редактирование. – sra

+0

Большое спасибо. :) – NullCod3

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