Rumah > Soal Jawab > teks badan
书中关于注入写法有两种
app.controller('PhoneListCtrl', ['$scope', '$http', function($scope,$http)];
app.controller('PhoneListCtrl', function($scope,$http)];
不懂这两种有什么区别呢!!??请教了
我想大声告诉你2017-05-15 16:58:43
Formatkan kod anda dahulu:
Suntikan paparan, kod terlalu panjang dan sukar dibaca, pemampatan kod tidak salah
app.controller('PhoneListCtrl', ['$scope', '$http', function($scope, $http){
//do something
}]);
Suntikan tersirat adalah mudah untuk ditulis, tetapi ralat akan berlaku semasa memampatkan js kerana nama pembolehubah menjadi lebih pendek dan suntikan kebergantungan adalah berdasarkan nama perkhidmatannya
app.controller('PhoneListCtrl', function($scope, $http){
//do something
});
Kami mengesyorkan kaedah $inject Anda boleh merujuk kepada Panduan Gaya Sudut
JohnPapaapp.controller('PhoneListCtrl', PhoneListCtrl);
PhoneListCtrl.$inject = ['$scope', '$http'];
function PhoneListCtrl($scope, $http){
}
Seperkara lagi, tidak kira yang mana yang anda gunakan, anda tidak perlu risau tentang pemampatan kod, kerana terdapat pemalam yang akan membantu kami dengan suntikan pergantungan Sama ada anda menggunakan gulp atau grunt, akan ada plug-in ng -annotate membantu anda menambah suntikan pergantungan.
Beri saya contoh
app.controller('PhoneListCtrl', PhoneListCtrl);
/* @ngInject */
function PhoneListCtrl($scope, $http){
}
伊谢尔伦2017-05-15 16:58:43
Saya akan memberi anda jawapan terus memetik artikel
Alamat asal
Suntikan ketergantungan ialah salah satu corak terbaik AngularJS. Ia menjadikan ujian lebih mudah dan menjadikan objek yang bergantung padanya lebih jelas. AngularJS sangat fleksibel apabila ia datang kepada suntikan. Cara paling mudah ialah dengan hanya menghantar nama kebergantungan ke dalam fungsi untuk modul:
var app = angular.module('app',[]);app.controller('MainCtrl', function($scope, $timeout){
$timeout(function(){
console.log($scope);
}, 1000);});
Di sini, jelas bahawa MainCtrl bergantung pada $scope dan $timeout.
Sehingga anda bersedia untuk memulakan pengeluaran dan mengecilkan kod anda. Menggunakan UglifyJS, contoh di atas akan menjadi:
var app=angular.module("app",[]);
app.controller("MainCtrl",function(e,t){t(function(){console.log(e)},1e3)})
Sekarang bagaimana AngularJS tahu apa yang bergantung pada MainCtrl? AngularJS menyediakan penyelesaian yang sangat mudah: lulus kebergantungan sebagai tatasusunan rentetan, dan elemen terakhir tatasusunan ialah fungsi yang mengambil semua kebergantungan sebagai parameter.
app.controller('MainCtrl', ['$scope', '$timeout', function($scope, $timeout){
$timeout(function(){
console.log($scope);
}, 1000);}]);
Seterusnya, AngularJS juga boleh mengetahui cara mencari kebergantungan dalam kod termampat:
app.controller("MainCtrl",["$scope","$timeout",function(e,t){t(function(){console.log(e)},1e3)}])
高洛峰2017-05-15 16:58:43
Yang pertama dipaparkan suntikan, dan yang kedua adalah suntikan automatik. Tiada beza.
Tetapi yang paling disyorkan ialah suntikan fungsi suntikan. Di samping itu, dalam cara pertama anda menulis, sila ambil perhatian bahawa selepas suntikan paparan, pesanan mesti sepadan dengan susunan parameter fungsi.