recherche

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

angulaire.js - Les données du contrôleur peuvent-elles être manipulées en usine avec Angular?

Je souhaite obtenir et modifier les variables dans le contrôleur de niveau supérieur en usine, est-ce possible ?

PHP中文网PHP中文网2790 Il y a quelques jours612

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

  • 習慣沉默

    習慣沉默2017-05-15 17:08:12

    Généralement, lorsque je travaille sur un projet, les services servent à deux fins :
    Premièrement, ils sont utilisés comme méthodes publiques, telles que les méthodes de soumission, certains services dans les boîtes contextuelles et d'autres services généraux similaires.
    Deuxièmement, il est utilisé lors du transfert de paramètres ou d'objets entre certains contrôleurs en fonction de besoins particuliers. Cette situation est rare et n'est généralement pas recommandée~

    .

    Quand vous avez parlé de changer les variables du contrôleur de niveau supérieur dans le service, j'ai l'impression que vous avez fourni un fragment de votre idée, plutôt que le point de demande fondamental~ Quelle est votre demande ?

    répondre
    0
  • 某草草

    某草草2017-05-15 17:08:12

    Il ne peut pas être utilisé directement, il existe deux manières :
    1. Modifiez la valeur via la fonction de rappel
    2 Modifiez la valeur en passant les paramètres de l'objet (tableau, objet)

    .
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body ng-app="myApp" >
    <p ng-controller="myCtrl">
    {{ value.name }} {{ value.value }}
    </p>
    <hr />
    <p ng-controller="myCtrl2">
    {{ value.name }} {{ value.value }}
    </p>
        
    <script>
    var app = angular.module('myApp', []);
    
    app.service('myService', function() {
        this.valueSet = function(value){
            this.valueFunction(value);
        };
        this.valueCallback = function(callback){
            var newValue = {
                name : "hello",
                value : "world"
            };
            this.valueFunction(newValue);
            callback(newValue);
        };
        this.valueFunction = function(value){
            value.name += ",";
            value.value += "!";
            return value;
        };
    });
    app.controller('myCtrl', ['$scope', 'myService', function($scope, myService) {
        $scope.value = {
            name : "你好",
            value : "世界"
        };
        //回调方式改版 $scope 的值
        myService.valueCallback(function(value){
            $scope.value = value;
        });
    }]);
    app.controller('myCtrl2', ['$scope', 'myService', function($scope, myService) {
        $scope.value = {
            name : "你好",
            value : "世界"
        };
        myService.valueSet($scope.value);
    }]);
    </script>
    
    </body>
    </html>
    

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-15 17:08:12

    C'est possible, mais pas recommandé.
    Encapsulez les données du contrôleur dans un objet, puis transmettez-les en tant que paramètre à la méthode d'usine.

    répondre
    0
  • Annulerrépondre