繁体   English   中英

如何管理不同的Angular模块依赖项

[英]How to manage different Angular module dependencies

我是Angular的新手,但是随着我变得更加舒适,我正在编写更多的模块化代码,将更少的逻辑塞到控制器中,提供更多独立的服务。 但是,我的问题是我最终多次重新声明了父模块,并且当下游声明注入的依赖关系与早期声明不同时,就会遇到冲突。

这是我目前正在做的简化版本:

<body ng-app="myApp">

//first instance of "myApp" for some controller
var myApp = angular.module('myApp', ['dep1', 'dep2']);
var someCtrl = myApp.controller('someCtrl', ['dep3','dep4']);

//later... another instance of "myApp" for another controller
if (!myApp)
    var myApp = angular.module('myApp', ['dep2']);
var anotherCtrl = myApp.controller('anotherCtrl', ['dep3','dep4']);

在这个琐碎的示例中重新声明myApp似乎很愚蠢,但是实际的项目是一个大型MVC PHP应用程序,其中包含许多可重用的部分等。因此,不能保证someCtrl总是会被包含在anotherCtrl之前。 换句话说,我需要每个模块都是“独立的”,除非附加到父myApp否则不能声明控制器/服务。

我知道以后没有办法将依赖项动态(重新)注入模块: myApp.addDependancy(['dep7', 'dep8'])

因此,我能想到的唯一解决方案是在<head>一次声明myApp ,并与任何潜在控制器/服务的每个可能依赖项...

var myApp = angular.module('myApp', ['dep1', 'dep2', 'dep3' ... ]);

...并且永远不要重新声明它。 这将使管理不同的依赖关系更加容易,但是这是否基本上破坏了依赖关系注入的目的? 因为我将注入一堆不需要的依赖项?

我是否误解了它应该如何工作? 解决这个问题的正确方法是什么? 链接到文档等非常受欢迎。

注意:我还读到,过度使用同一父模块( myApp )是一个常见的Angular错误,但是我需要控制器/服务通过$rootScope$watch等相互通信。认为他们都必须扩展myApp吗?

如何与注射子模块到主这样的打算: 小提琴

angular.module("main", ['sub'])

angular.module("sub", []).controller("subctrl", function ($scope){
    $scope.hello = "hello I am sub-module";
}) 

对于小型Angular应用, angular.module一次声明angular.module并包括所有依赖项。

但是,对于大型应用程序,建议的Angular设置是创建多个modules和一个依赖于其他modules的主module

angular.module('xmpl.service', []);
angular.module('xmpl.directive', []);
angular.module('xmpl.filter', []);

angular.module('xmpl', ['xmpl.service', 'xmpl.directive', 'xmpl.filter']);

通过此设置,您可以实现创建特定于功能的模块的目标,并且仍然使所有人都可以使用$rootScope

这里查看官方文档。

我希望这有帮助。

暂无
暂无

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

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