angular.js - angularjs 依赖注入的写法问题
我想大声告诉你
我想大声告诉你 2017-05-15 16:56:43
0
4
562

书中关于注入写法有两种
app.controller('PhoneListCtrl', ['$scope', '$http', function($scope,$http)];
app.controller('PhoneListCtrl', function($scope,$http)];
不懂这两种有什么区别呢!!??请教了

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

répondre à tous(4)
我想大声告诉你

Formatez d’abord votre code :

Injection d'affichage, le code est trop long et difficile à lire, la compression du code ne se passe pas mal

app.controller('PhoneListCtrl', ['$scope', '$http', function($scope, $http){
     //do something
}]);

L'injection implicite est simple à écrire, mais des erreurs se produiront lors de la compression de js car les noms de variables deviennent plus courts et l'injection de dépendances est basée sur le nom de son service

app.controller('PhoneListCtrl', function($scope, $http){
     //do something
});

Nous recommandons la méthode $inject. Vous pouvez vous référer au Angular Style Guide

de JohnPapa.
app.controller('PhoneListCtrl', PhoneListCtrl);

PhoneListCtrl.$inject = ['$scope', '$http'];

function PhoneListCtrl($scope, $http){

}

Encore une chose, peu importe celui que vous utilisez, vous n'avez pas à vous soucier de la compression du code, car il existe des plug-ins qui nous aideront avec l'injection de dépendances. Que vous utilisiez gulp ou grunt, il y aura un. Le plug-in ng -annotate vous aide à ajouter une injection de dépendances.

Donnez-moi un exemple

app.controller('PhoneListCtrl', PhoneListCtrl);

/* @ngInject */
function PhoneListCtrl($scope, $http){

}
伊谢尔伦

Je vais vous donner la réponse directement en citant un article
Adresse originale
L'injection de dépendances est l'un des meilleurs modèles d'AngularJS. Cela facilite les tests et rend les objets dont ils dépendent plus clairs. AngularJS est très flexible en matière d'injection. Le moyen le plus simple est de simplement transmettre le nom de la dépendance dans la fonction du module :

var app = angular.module('app',[]);app.controller('MainCtrl', function($scope, $timeout){
    $timeout(function(){
        console.log($scope);
    }, 1000);});

Ici, il est clair que MainCtrl dépend de $scope et $timeout.
Jusqu'à ce que vous soyez prêt à passer en production et à réduire votre code. En utilisant UglifyJS, l'exemple ci-dessus deviendrait :

var app=angular.module("app",[]);
app.controller("MainCtrl",function(e,t){t(function(){console.log(e)},1e3)})

Maintenant, comment AngularJS sait-il de quoi dépend MainCtrl ? AngularJS fournit une solution très simple : transmettez les dépendances sous forme de tableau de chaînes, et le dernier élément du tableau est une fonction qui prend toutes les dépendances comme paramètres.

app.controller('MainCtrl', ['$scope', '$timeout', function($scope, $timeout){
    $timeout(function(){
        console.log($scope);
    }, 1000);}]);

Ensuite, AngularJS peut aussi savoir trouver des dépendances dans le code compressé :

app.controller("MainCtrl",["$scope","$timeout",function(e,t){t(function(){console.log(e)},1e3)}])
小葫芦

Le premier est affiché en injection, et le second est en injection automatique. Aucune différence.
Mais le plus recommandé est l'injection de fonction d'injection. De plus, dans votre première manière d'écrire, notez qu'après injection d'affichage, l'ordre doit correspondre à l'ordre des paramètres de la fonction.

迷茫

Merci à vous deux ! J'ai reçu une leçon>

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal