recherche

Maison  >  Questions et réponses  >  le corps du texte

angulaire.js - angulaire passe $scope en service

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

我想大声告诉你我想大声告诉你2774 Il y a quelques jours702

répondre à tous(4)je répondrai

  • ringa_lee

    ringa_lee2017-05-15 16:52:23

    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.

    répondre
    0
  • 黄舟

    黄舟2017-05-15 16:52:23

    À 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

    app.contronller('xxx', ['$scope', 'service', function($scope, service) {
        $scope.xxx = 'xxxx';
        service.say($scope.xxx);
    }]);
    app.service('xxx', [function() {
        this.say = function(word) {
    }}]);
    

    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.

    répondre
    0
  • 某草草

    某草草2017-05-15 16:52:23

    Allez sur mon blog et passez-le en paramètre de rappel

    répondre
    0
  • 高洛峰

    高洛峰2017-05-15 16:52:23

    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

    .

    répondre
    0
  • Annulerrépondre