使用ES6导入()在routeprovider中延迟加载angularjs 1.8控制器
在我的angularjs 1.8 routeprovider中,我目前正在使用ocLazyLoad延迟加载给定视图的控制器和css文件,但是我想尝试使用ES6导入/导出模块来保持代码整洁并启用依赖项的自动导入 在我的解析程序for each.when route case中,延迟加载的脚本与控制器及其依赖项一样工作,但是如果我切换到使用导入语法,延迟加载将不再工作(第一个错误是javascript导入语句只能位于模块的顶层,这是可以理解的) 我尝试返回一个承诺,等待所有导入模块的承诺使用以下命令完成。加载脚本时,angularjs抱怨控制器不存在(路由使用命名的控制器,导入的脚本将控制器注入应用程序)。我认为这是因为routeprovider在加载之前尝试分配控制器名称,即使它在渲染之前等待脚本通过承诺加载使用ES6导入()在routeprovider中延迟加载angularjs 1.8控制器,angularjs,ecmascript-6,import,Angularjs,Ecmascript 6,Import,在我的angularjs 1.8 routeprovider中,我目前正在使用ocLazyLoad延迟加载给定视图的控制器和css文件,但是我想尝试使用ES6导入/导出模块来保持代码整洁并启用依赖项的自动导入 在我的解析程序for each.when route case中,延迟加载的脚本与控制器及其依赖项一样工作,但是如果我切换到使用导入语法,延迟加载将不再工作(第一个错误是javascript导入语句只能位于模块的顶层,这是可以理解的) 我尝试返回一个承诺,等待所有导入模块的承诺使用以下命令
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的延迟加载