#angularjs #ecmascript-6 #import
#angularjs #ecmascript-6 #импорт
Вопрос:
В моем angularjs 1.8 routeprovider я в настоящее время откладываю загрузку контроллеров и css-файлов для данного представления с помощью ocLazyLoad, однако я хочу попробовать использовать модули импорта / экспорта ES6, чтобы сделать код более аккуратным и включить автоматический импорт зависимостей.
В моем распознавателе для каждого.в случае маршрутизации сценарии с отложенной загрузкой работают как есть для контроллеров и их зависимостей, но если я переключусь на использование синтаксиса импорта, отложенная загрузка больше не работает (первая ошибка будет заключаться в том, что операторы импорта javascript могут находиться только на верхнем уровне модуля, что понятно).
Я попытался вернуть обещание, которое ожидает завершения обещаний всех модулей импорта, используя следующее. Во время загрузки скриптов angularjs жалуется на то, что контроллер не существует (маршруты используют именованные контроллеры, а импортированные скрипты вводят контроллер в приложение). Я предполагаю, что это связано с тем, что routeprovider пытается присвоить имя контроллера до его загрузки, даже если он ожидает загрузки скриптов через promises перед рендерингом.
loadModules: [function () {
return Promise.all(options.modules.map(module => import(module) ));
}]
Я также попытался автоматически определить основной модуль экспорта и зарегистрировать контроллер в распознавателе (с экспортируемым контроллером как [dependencies, function(){}]
), вместо добавления его в приложение в скрипте, но это имеет тот же эффект:
loadModules: ['$controllerProvider', function ($controllerProvider) {
return new Promise((resolve, reject) => {
// Create a promise that returns the result of all the import module promises
return import(options.module).then(function (mod) {
let firstProp = Object.getOwnPropertyNames(mod)[0];
console.log('module load', firstProp)
if (!$controllerProvider.has(firstProp)) {
$controllerProvider.register(firstProp, mod[firstProp]);
console.log('registered', firstProp);
}
resolve();
});
});
}],
Итак, мой вопрос в том, есть ли у кого-нибудь синтаксис импорта ES6 для работы с routeprovider для отложенной загрузки?