2013-08-05 54 views
1

在angularJS injector的文檔中,某些代碼使用$injector,而某些代碼僅使用injector。我很困惑。這兩者之間有什麼區別,哪些地方可以使用它們?我也對$scopescope有同樣的問題。

+1

看到這個http://www.egghead.io/video/NnB2NBtoeay。它歸結爲如果您使用注射註釋或不 –

+0

謝謝!這些視頻看起來不錯。 – Manoj

回答

2

當你想使用injectorscope,或任何其他構建在angularjs提供其他服務的依賴,你需要$前綴他們,因爲按照慣例角度註冊所有建立在供應商與$前綴,所以scope註冊爲$scopeinjector作爲$injector

當角實例化對象(使用注射器順便說一句),它會檢查哪些依賴對象有(因爲它需要將它們注入)和它的工作方式是通過檢查該構造函數的變量名對象,所以這就是爲什麼正確命名變量非常重要,否則你會得到錯誤未知的供應商...

當您檢索注射器如下:

var injector = angular.injector(['gaad', 'components']); 

你不使用$前綴,因爲這是正常的變化,實際上你可以說它是任何你想要的(包括$噴油器)。

如果你想有噴射器的依賴,你需要將其命名爲:

angular.module('app').factory('$exceptionHandler', function($injector) { 
    ... 
}); 

或(約定在需要的時候使用angularjs腳本的縮小):

angular.module('app').factory('$exceptionHandler', ['$injector', function(anyNameYouWant) { 
    ... 
}]); 

類似的範圍,用於指令中的鏈接功能時:

link: function(scope, element, attr) { 
} 

您不必ca因爲沒有任何東西被注入到這裏,所以它是有限的它只是一個函數參數。你可以隨心所欲地調用它,但這裏的約定是使用scope而不是$scope來區分當範圍被注入和何時被用作參數的情況。

+0

謝謝。這澄清了混淆。 – Manoj

+0

Np,起初我也很困惑:) –