angular.module('myApp',[])
.controller('DemoController',['$rootScope','$scope','$http',function($rootScope,$scope,$http){
}])
angular.module('myApp',[])
.controller('DemoController',function($rootScope,$scope,$http){
})
Apakah perbezaan antara kedua-dua ini?
Selepas
function
, tiada keperluan pesanan atau kuantiti untuk parameter yang diluluskan.Cara pertama ialah dengan menentukan pembolehubah yang dihantar ke
function
的变量用字符串'$rootScope','$scope','$http'
dengan rentetan'$rootScope','$scope','$http'
, dan cara kedua hanyalah nama pembolehubah ringkasSebab alat mampatan js akan
function($rootScope,$scope,$http)
里的$rootScope,$scope,$http
混淆压缩掉, 比如换成了function(a,b,c)
.Selepas kod dikaburkan dan dimampatkan, angular tidak tahu parameter (atau kebergantungan) yang dihantar ke
function
, dan ia tidak boleh dijalankan selepas diimport dan dimampatkan.Ini adalah dua cara suntikan kebergantungan sudut:
Yang pertama ialah suntikan sebaris, kedua adalah suntikan inferens (ada juga suntikan eksplisit)
Perbezaannya ialah
Suntikan sebaris:
membolehkan kita bermula dari dalam baris apabila fungsi ditakrifkan Lulus dalam parameter. Tambahan pula, ia mengelakkan penggunaan pembolehubah sementara semasa definisi.
Suntikan disimpulkan:
Jika tiada pengisytiharan eksplisit, Angular akan menganggap bahawa nama parameter ialah nama kebergantungan, tetapi proses ini hanya terpakai pada kod yang tidak dimampatkan dan tidak dikelirukan, kerana Angular memerlukan senarai parameter yang tidak dimampatkan asal untuk penghuraian. (Namun, anda boleh memperkenalkan gulp-ng-annotate dalam proses pembungkusan untuk menukar suntikan inferens kepada suntikan sebaris)
Adalah disyorkan agar anda membaca kaedah suntikan kebergantungan sudut