[英]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.