我是Angular初學者,在學習中有個關於定義控制器的寫法問題。
在剛接觸的時候,書上是這樣寫控制的:
var myApp = angular.module('MyApp', []);
myApp.controller('MyController', function($scope){
// todo...
})
後來在一些網路上的文章,是這樣寫的:
var myApp = angular.module('MyApp', []);
myApp.controller('MyController', ['$scope', function($scope){
// todo...
}]);
那麼問題來了,後者加了個[]
,是個什麼意思?這兩種寫法有什麼不同呢?
在練習中發現同樣的實作用這兩種都可以。
第二種寫法叫
inline-annotation
,看文檔依賴注入這種寫法的主要目的是為了避免源碼壓縮(uglify)時變數名被替換,導致依賴注入失敗的問題。
如果對實現有興趣,可以看手寫依賴注入
是要注入的依賴,這種寫法利於以後的程式碼壓縮