2014-12-03 109 views
1

我對angular的研究還很陌生,並且一直在構建一個簡單的CRM應用程序。對於單個資源(restful API資源),我在我的角度應用程序中定義了3-4個路由和控制器。現在,我需要反覆向每個控制器注入一組服務和模塊。我知道每個控制器都有它自己的範圍實例和工廠/服務的共享實例,但有沒有一種方法可以集中定義多個控制器的依賴關係?Angularjs - 向多個控制器注入依賴關係

在下面的示例中,$modal,growl,configuration,$scope被注入到所有3個控制器中,我只想定義一次。

房源控制器

myApp.controller('VenueListCtrl', ['$scope', '$http', 'configuration', '$modal', 'growl', 
    function ($scope, $http, configuration, $modal, growl) { 
    } 
]); 

創建/新控制器

myApp.controller('VenueCreateCtrl', ['$scope', '$http', '$location', 'configuration', 
    function ($scope, $http, $location, configuration) { 
    } 
]); 

詳情控制器

myApp.controller('VenueDetailCtrl', ['$scope', '$routeParams', '$http', '$modal', 'configuration', 
    function ($scope, $routeParams, $http, $modal, configuration) { 
    } 
]); 
+0

也許你可以創建一個依賴於這些事情的服務並公開所需的行爲。那麼控制器將僅依賴於該服務。請記住,這不適用於'$ scope',因爲它對每個控制器都是本地的。 – 2014-12-04 08:31:44

+0

@NikosParaskevopoulos我想到了這一點,但事實是每個控制器都以不同的方式使用服務/工廠。單獨包含它們的模塊化是非常有用的,但我希望能夠在組裝我的應用程序時對模塊進行分組:( – 2014-12-04 09:36:13

回答

0

你可以做的最好的是:控制器的使用未anonimus函數聲明:

var depsToInject = ['$scope', 'growl', 'configuration', '$modal']; 

myApp.controller('Ctrl1' , Ctrl1); 

Ctrl1.$inject = depsToInject ; 

function Ctrl1($scope, growl, configuration, $modal) { 
    .... 
} 

myApp.controller('Ctrl2' , Ctrl2); 

Ctrl2.$inject = depsToInject ; 

function Ctrl1($scope, growl, configuration, $modal) { 
    .... 
} 

等但這並不完全統一的聲明,我不認爲有更好的辦法。但是你可以從另一端嘗試,並用另一個依賴包裝你的依賴,但我也不喜歡這種方式。

+0

)這使得代碼稍微更清晰,但並未完成我正在尋找的分組注入。有一種方法可以聲明一個依賴於其他4個自定義模塊並直接注入的模塊?同時,它需要公開已注入模塊的底層API /對象。 – 2014-12-04 09:38:32