2013-07-04 64 views
0

我的angularjs控制器中有一組常用提供者。例如。 $ scope,$ rootScope,$ http和我的客戶服務。我想注入這些共同供應商的所有控制器無需控制器向angularjs控制器注入普通提供者

如定義每個人,

相反的,

function HomeCtrl($scope, $rootScope, $http){ 
    ..... 
} 
function MenuCtrl($scope, $rootScope, $http, MyService){ 
    ..... 
} 

做到這一點,

function HomeCtrl(){ 
    ... 
    // $scope, $rootScope, $http are available here 
    ... 
} 
function MenuCtrl(MyService){ 
    ... 
    // $scope, $rootScope, $http are available here 
    ... 
} 

所以,在這個例子中$ scope,$ rootScope,$ http被自動注入到所有控制器中。但我不知道如何做到這一點。任何人都知道一種方式?謝謝。

回答

1

我不認爲用相同的依賴性來噴塗你的所有控制器是個不錯的主意。它表明應用程序沒有一個好的結構,你應該解決這個問題。

以您的榜樣爲例,有幾件事情非常突出。你並不需要依賴於$scope$rootScope,您可以使用$scope.$root

如果您在包裹業務邏輯並重用代碼之間的控制器,那麼我建議你的控制器不需要得到$scope根範圍取決於$ http,而是將此代碼移到您所依賴的服務中。嘗試並適當地命名這些服務,以便您可以告訴他們所做的事情。比如更喜歡AccountCreator而不是像AccountsService這樣的更通用的東西。事實上從來沒有命名的東西xxxService服務後綴是一種方式,真的沒有增加任何意義。

根據你的實際問題,不,我不認爲有一種開箱即用的方法。我對你如何破解它有一些想法,但我認爲潘多拉盒子應該被鎖定。

+0

對於您的依賴關係非常明確,總是一個好主意。 – Chandermani

+0

感謝您的寶貴答案和提示,是的,我也不想破解核心代碼。 – Gihan

+0

歡迎您,如果您對答案滿意,請點擊問題的答案 –

相關問題