Je lis http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html et il s'est avéré que l'injection de dépendance angularjs a des problèmes si vous réduisez votre javascript afin que je je me demande si au lieu de
var MyController = function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}
Tu devrais utiliser
var MyController = ['$scope', '$http', function($scope, $http) {
$http.get('https://api.github.com/repos/angular/angular.js/commits')
.then(function(response) {
$scope.commits = response.data
})
}]
dans l'ensemble, je pensais que le deuxième extrait était pour l'ancienne version d'angularjs mais ....
Dois-je toujours utiliser la méthode d'injection (la deuxième)?
Il est plus sûr d'utiliser la deuxième variante mais il est également possible d'utiliser la première variante en toute sécurité avec ngmin .
MISE À JOUR:
maintenant ng-annotate devient un nouvel outil par défaut pour résoudre ce problème.
la source
Oui, vous devez utiliser l' injection de dépendances explicite (deuxième variante). Mais depuis Angular 1.3.1 vous pouvez désactiver l' injection de dépendances implicites , il est vraiment utile de résoudre les problèmes potentiels de changement de nom en une seule fois (avant la minification).
Désactivation de DI implicite, à l'aide de la
strictDi
propriété config:Désactivation de la DI implicite, à l'aide de la
ng-strict-di
directive:la source
Juste pour souligner que si vous utilisez
Yeoman
il n'y a pas besoin de faire comme
parce que grognement pendant minify prend en compte la façon de gérer DI.
la source
Comme OZ_ l'a dit, utilisez ngmin pour réduire tous les fichiers js angulaires, comme directive.js service.js. Après cela, vous pouvez utiliser le compilateur Closure pour l'optimiser.
réf:
Comment réduire les scripts angularjs
Construire avec YO
la source
Vous voudrez peut-être utiliser
$inject
comme indiqué ici :la source
Utiliser l'injection de dépendance stricte pour diagnostiquer les problèmes
Avec l' annotation implicite , le code se cassera une fois minifié.
À partir des documents:
Vous pouvez ajouter une
ng-strict-di
directive sur le même élément queng-app
pour opter en mode DI strict.Le mode strict génère une erreur chaque fois qu'un service tente d'utiliser des annotations implicites.
Cela peut être utile pour déterminer les problèmes de recherche.
Pour plus d'informations, consultez
la source