繁体   English   中英

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

[英]How to inject a module dynamically inside another module?

我的角度应用程序就像下面的 App.js

 angular.module('myapp', [
    'ngSanitize',
    'ngMessages',
    authModule,
    loginModule
]);

//prodductModule

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

怎么做? 有角度的可能吗?

你可以这样做:

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

现在,稍后在您的 AJAX 调用代码中,您可以这样编写:

myApp.requires.push('productModule');

看一看在 AngularJS 应用中有条件地注入模块

简短回答 - 不,默认情况下不支持。

长答案 - 轻微 - 使用 3rd 方库,如: https : //oclazyload.readme.io/

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

但最终决定照常由您决定:)

编辑:如果您在用户登录时尝试加载其他模块。我们通常这样做,就像使用查询字符串中的身份验证令牌重定向到生产应用程序一样,因此服务器让我们使用应用程序下载 javascript。 但这不是每次都必需的,通常我们加载整个应用程序。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM