angular.js - masalah penulisan suntikan kebergantungan angularjs
我想大声告诉你2017-05-15 16:56:43
0
4
581
Terdapat dua cara untuk menulis suntikan dalam buku app.controller('PhoneListCtrl', ['$scope', '$http', function ($scope, $http)]; app. pengawal( 'PhoneListCtrl', fungsi ($skop,$http)]; Saya tidak faham perbezaan antara kedua-dua ini! ?
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
Kami mengesyorkan kaedah $inject Anda boleh merujuk kepada Panduan Gaya Sudut
JohnPapa
app.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){
}
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.
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.
Formatkan kod anda dahulu:
Suntikan paparan, kod terlalu panjang dan sukar dibaca, pemampatan kod tidak salah
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
Kami mengesyorkan kaedah $inject Anda boleh merujuk kepada Panduan Gaya Sudut
JohnPapaSeperkara 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
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:
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:
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.
Seterusnya, AngularJS juga boleh mengetahui cara mencari kebergantungan dalam kod termampat:
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.
Terima kasih kepada anda berdua! Telah diajar pelajaran>