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