Maison > Questions et réponses > le corps du texte
Je souhaite obtenir et modifier les variables dans le contrôleur de niveau supérieur en usine, est-ce possible ?
習慣沉默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 ?
某草草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>
漂亮男人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.