Отложенная загрузка контроллеров angularjs 1.8 в routeprovider с использованием импорта ES6()

#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 для отложенной загрузки?