Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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
Javascript 如何在另一个模块中动态注入一个模块?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在另一个模块中动态注入一个模块?

Javascript 如何在另一个模块中动态注入一个模块?,javascript,angularjs,Javascript,Angularjs,我的angular应用程序如下所示 App.js 在我的登录模块中,我有一个使用$http的ajax调用。收到服务器的正确响应后,我想初始化另一个模块,假设为“productModule” 怎么做?在角度上可能吗?您可以这样做: var myApp = angular.module('myapp', [ 'ngSanitize', 'ngMessages' ]); myApp.requires.push('productModule'); 现在,在稍后的AJAX调用代码中,您

我的angular应用程序如下所示 App.js

在我的登录模块中,我有一个使用$http的ajax调用。收到服务器的正确响应后,我想初始化另一个模块,假设为“productModule”

怎么做?在角度上可能吗?

您可以这样做:

var myApp = angular.module('myapp', [
    'ngSanitize',
    'ngMessages'
]);
myApp.requires.push('productModule');
现在,在稍后的AJAX调用代码中,您可以这样编写:

var myApp = angular.module('myapp', [
    'ngSanitize',
    'ngMessages'
]);
myApp.requires.push('productModule');

请看一下简短的回答-不,默认情况下不支持

回答很长-略微-使用第三方库,如:

但我的意见是,你们不应该这样做,Angular是为应用程序设计的,所以在开始之前让整个应用程序加载。即使是大型应用程序也会快速启动。动态加载模块可能会导致不必要的滞后,并且在不需要时不会卸载模块

但最终决定权归你所有:)

编辑:
如果您试图在用户登录时加载其他模块。我们通常使用querystring中的身份验证令牌重定向到生产应用程序,所以服务器允许我们使用该应用程序下载javascript。但这不是每次都必须的,我们通常会加载整个应用程序

您不能动态加载模块。Angular在引导过程中需要知道所有模块名称

要解决此问题,您可以创建空模块并将其名称传递给您的应用程序。
然后通过RequireJS加载模块JS文件,并逐个注册每个服务或控制器。

动态加载模块,我建议使用require JS。

可能的重复在运行时不起作用。您只能在应用程序运行之前执行此操作。哦!但是我们已经在您提到的oclazyload中使用了很长一段时间。使用oczlazyload它会工作的,您以前没有提到过这个库。