我的角度应用程序如下所示 App.js
angular.module('myapp', [
'ngSanitize',
'ngMessages',
authModule,
loginModule
]);
//prodductModule
在我的登录模块中,我使用$ http进行ajax调用。收到服务器的正确响应后,我想初始化另一个模块,假设" productModule"。
怎么做?有角度可能吗?
答案 0 :(得分:1)
你可以这样做:
var myApp = angular.module('myapp', [
'ngSanitize',
'ngMessages'
]);
现在,稍后在您的AJAX调用代码中,您可以这样写:
myApp.requires.push('productModule');
答案 1 :(得分:0)
简短回答 - 不,默认情况下不支持。
长答案 - 轻微 - 使用第三方库,例如:https://oclazyload.readme.io/
但我的意见是你不应该这样做,Angular是专为应用程序设计的,所以只需在启动之前加载整个应用程序。即使是大型应用也会快速启动。动态加载模块会导致不必要的滞后,并且在不需要时不会卸载模块。
但是最后的决定是你的,因为它是真的:)
修改强> 如果您在用户登录时尝试加载其他模块。我们通常会像在querystring中使用身份验证令牌重定向到生产应用程序一样,所以服务器让我们用app下载javascript。但这并非每次都是必要的,因此我们加载整个应用程序。
答案 2 :(得分:0)
您无法动态加载模块。 Angular需要在引导过程中知道所有模块名称。
要解决此问题,您可以创建空模块并将其名称传递给您的应用。 然后通过 RequireJS 加载模块JS文件并逐个注册每个服务或控制器。
答案 3 :(得分:0)
动态加载模块,我建议使用require js。