Maison > Questions et réponses > le corps du texte
Par exemple comme ça
app.controller('myCtrl', function($scope, $rootScope) {
// 将$rootScope改成其他名字就不行了。
$scope.names = ["Emil", "Tobias", "Linus"];
$rootScope.lastname = "Refsnes";
});
Comment angulaire sait-il que mon deuxième paramètre nécessite $rootScope ?
迷茫2017-06-10 09:50:17
Parce qu'AngularJS propose deux méthodes d'injection. L'une est appelée injection de dépendances implicites (injection de dépendances implicites) et l'autre est appelée injection de dépendances explicites (injection de dépendances explicites).
Dans votre code, vous utilisez le premier type, l'injection de dépendances implicite :
app.controller('myCtrl', function($scope, $rootScope) {
$scope.names = ["Emil", "Tobias", "Linus"];
$rootScope.lastname = "Refsnes";
});
En raison de $scope
和 $rootScope
都是 AngularJS 的 built-in service,因此 AngularJS 可以找到你想要注入的东西。但如果你改成 rootScope
, AngularJS ne peut pas le trouver à partir de son propre framework.
Si vous utilisez l'injection de dépendances explicite, c'est ici :
app.controller('myCtrl', ['$scope', '$rootScope', function(whatever, blah) {
whatever.names = ["Emil", "Tobias", "Linus"];
blah.lastname = "Refsnes";
}]);
De cette façon, AngularJS le recherchera en fonction du $scope
和 $rootScope
explicitement déclaré. Peu importe ce que vous définissez dans les paramètres de la fonction anonyme. Faites juste attention à la commande.
Vous pouvez également le faire en appelant $inject
manuellement. Comme ça :
var myController = function($scope, $rootScope) {
$scope.names = ["Emil", "Tobias", "Linus"];
$rootScope.lastname = "Refsnes";
});
myConroller.$inject = ['$scope', '$rootScope'];
app.controller('myCtrl', myController);
Veuillez vous référer à la documentation pour plus de détails : https://docs.angularjs.org/gu...
Partie annotation des dépendances.
La documentation vous rappelle également que si vous envisagez de compresser votre code, n'utilisez pas l'injection de dépendances implicite.