app.contronller('xxx', ['$scope', 'service', function($scope, service) {
$scope.xxx = 'xxxx';
service.say($scope);
}]);
app.service('xxx', [function() {
this.say = function($scope) {
}
}]);
Il existe de nombreuses situations de ce type dans le code maintenu. Est-ce une mauvaise utilisation ? C'est génial à utiliser, mais le code est tellement déroutant
Il s'agit évidemment d'une approche paresseuse, ce qui rend la signification de la méthode de service très vague. Si vous y transmettez $scope, il ne sera pas clair quel paramètre est réellement utilisé.
Et cela fait que la méthode de service dépend inutilement de $scope.
À proprement parler, les valeurs de statut non globales ne doivent pas être traitées dans le service, notamment les modifications. C'est $scope. En d’autres termes, le service ici est similaire à une interface. La liste des paramètres de la fonction doit être claire, plutôt que des paramètres généraux.
Comme
Bien sûr, des variables globales telles que $location et $rootScope peuvent être utilisées car elles n'ont pas besoin d'être transmises via d'autres composants. Elles peuvent être obtenues par injection.
Allez sur mon blog et passez-le en paramètre de rappel
En fait, lorsque j'ai testé, j'ai constaté que si vous renvoyez la valeur du service à $scope dans le contrôleur, la fermeture semble n'avoir aucun effet. Cependant, passer $scope dans mettra directement à jour le $scope dans le. contrôleur dans le service. C'est très pratique à utiliser
.