Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ES6导入()在routeprovider中延迟加载angularjs 1.8控制器_Angularjs_Ecmascript 6_Import - Fatal编程技术网

使用ES6导入()在routeprovider中延迟加载angularjs 1.8控制器

使用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导入语句只能位于模块的顶层,这是可以理解的) 我尝试返回一个承诺,等待所有导入模块的承诺使用以下命令

在我的angularjs 1.8 routeprovider中,我目前正在使用ocLazyLoad延迟加载给定视图的控制器和css文件,但是我想尝试使用ES6导入/导出模块来保持代码整洁并启用依赖项的自动导入

在我的解析程序for each.when route case中,延迟加载的脚本与控制器及其依赖项一样工作,但是如果我切换到使用导入语法,延迟加载将不再工作(第一个错误是javascript导入语句只能位于模块的顶层,这是可以理解的)

我尝试返回一个承诺,等待所有导入模块的承诺使用以下命令完成。加载脚本时,angularjs抱怨控制器不存在(路由使用命名的控制器,导入的脚本将控制器注入应用程序)。我认为这是因为routeprovider在加载之前尝试分配控制器名称,即使它在渲染之前等待脚本通过承诺加载

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的延迟加载