2017-09-27 7 views
0

Il existe une multitude d'informations concernant l'obtention de données d'un service et leur utilisation dans le contrôleur, mais j'ai parcouru Internet et n'ai trouvé aucun exemple ou explication sur la façon de procéder. Si j'ai un contrôleur de base:AngularJS: Obtenir des données du contrôleur en service

app.controller('myController', function($scope) { 
    $scope.myObject = [ 
    { 
     x = 1; 
     y = 2; 
    }, 
    { 
     x = 3; 
     y = 4; 
    }] 
}); 

Je voudrais écrire un service qui prendrait l'objet « myObject » du contrôleur, modifier l'objet, et le renvoyer au contrôleur. Je comprends comment écrire des services et obtenir les informations à un contrôleur, mais comment un service peut-il accéder à l'objet "myObject"?

Répondre

1

Vous devez:

1) Créer le service et la fonction qui modifie les données. 3) Injectez le service dans votre contrôleur. 4) Appelez la fonction de votre service.

Consultez cette example J'ai écrit pour vous.

Vous avez le contrôleur:

.controller("MyController",function($scope, ModifyDataService) { 
    $scope.data = "foo"; 
    $scope.dataModified = null; 
    $scope.modifyData = function() { 
     $scope.dataModified = ModifyDataService($scope.data); 
    } 
}) 

Et le service qui modifie les données:

.service("ModifyDataService", function() { 
    return function(data) { 
     /** Reverse String **/ 
    if(typeof data !== 'string') throw 'Data must be string'; 
    return Array.from(data).reverse().join(""); 
    }; 
}) 
1

Si votre cas d'utilisation implique simplement la modification d'un objet, alors une méthode de service est peut-être la solution.

app.controller('myController', function($scope, myService) { 
    $scope.myObject = [{ 
    x = 1; 
    y = 2; 
    }, { 
    x = 3; 
    y = 4; 
    }]; 

    /* Option 1, transform object in place. */ 
    myService.changeObject($scope.myObject); 

    /* Option 2, replace object. */ 
    $scope.myObject = myService.changeObject($scope.myObject); 
});