簡體   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