angular.js - angular 将$scope传入service
我想大声告诉你
我想大声告诉你 2017-05-15 16:50:23
0
4
679
app.contronller('xxx', ['$scope', 'service', function($scope, service) {
    $scope.xxx = 'xxxx';

    service.say($scope);
}]);

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

现在维护的代码里好多这样的情形,这是不是错误的用法?感觉用起来很爽,但是代码好混乱

我想大声告诉你
我想大声告诉你

répondre à tous(4)
左手右手慢动作

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

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.

某草草

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

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal