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! ?

我想大声告诉你
我想大声告诉你

membalas semua(4)
我想大声告诉你

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

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.

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)}])
小葫芦

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>

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan