Rumah > Soal Jawab > teks badan
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?
phpcn_u15822017-06-07 09:25:58
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 ringkas
Sebab 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.
PHP中文网2017-06-07 09:25:58
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