Rumah > Soal Jawab > teks badan
我在使用各大社区查关于angular的知识的时候,经常看到两种依赖注入的模式,有的是controller.('Ctr',[$scope,function($scope){...}]);
有的直接是controller.('Ctr',function($scope){...});
想请教一下后面这个是新的模式而且通用的吗?
滿天的星座2017-05-15 17:02:16
Amalan terbaik ialah menggunakan: pengawal.('Ctr',['$skop',fungsi($skop){...}]).
Seperti yang @Deboy katakan, untuk pemampatan js.
Prestasi yang lebih baik. (controller.('Ctr',function($scope){...}), angularjs akan menghuraikan parameter fungsi ini dan akhirnya mendapatkan kandungan untuk disuntik, manakala kaedah penulisan gaya tatasusunan boleh melangkau langkah penghuraian , dan prestasi akan menjadi lebih baik). Dilampirkan kod sumber untuk rujukan:
function annotate(fn, strictDi, name) {
var $inject,
fnText,
argDecl,
last;
if (typeof fn === 'function') {
if (!($inject = fn.$inject)) {
$inject = [];
if (fn.length) {
if (strictDi) {
if (!isString(name) || !name) {
name = fn.name || anonFn(fn);
}
throw $injectorMinErr('strictdi',
'{0} is not using explicit annotation and cannot be invoked in strict mode', name);
}
fnText = fn.toString().replace(STRIP_COMMENTS, '');
argDecl = fnText.match(FN_ARGS);
forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
arg.replace(FN_ARG, function(all, underscore, name) {
$inject.push(name);
});
});
}
fn.$inject = $inject;
}
} else if (isArray(fn)) {
last = fn.length - 1;
assertArgFn(fn[last], 'fn');
$inject = fn.slice(0, last);
} else {
assertArgFn(fn, 'fn', true);
}
return $inject;
}
天蓬老师2017-05-15 17:02:16
Oleh kerana semasa proses pengoptimuman bahagian hadapan, js dan fail lain akan dimampatkan dan beberapa rentetan akan digantikan dengan huruf tunggal Jika ini berlaku, suntikan sudut tidak akan dihalang daripada dimampatkan Tidak boleh disuntik. Yang sebelumnya diproses supaya walaupun dimampatkan, ia tidak akan menyebabkan kegagalan suntikan
Kesan kedua-dua pelaksanaan dalam fasa pembangunan adalah sama
曾经蜡笔没有小新2017-05-15 17:02:16
Tiada spesifikasi/standard untuk bercakap tentang pelaksanaan suntikan kebergantungan
angular
, tetapi ia adalah idea yang baik.
Saya telah menulis tutorial sebelum ini untuk mengajar anda menulis sistem suntikan kebergantungan yang serupa dengan angular
Saya harap ia berguna kepada anda: Suntikan ketergantungan tulisan tangan BDD