web-dev-qa-db-fra.com

angularjs définissant des services pour le même module dans différents fichiers

J'ai deux fichiers dans lesquels je définis des services dans mon application angulaire, mais lorsque j'essaie de les utiliser tous les deux dans ma directive, le message d'erreur indiquant que le fournisseur de service est introuvable est indisponible. Il semble qu'un service écrase l'autre. Si je change la définition du module dans service2.js en myapp.services2, alors cela fonctionne. Je pense que je pourrais ajouter plusieurs usines au même module de cette façon. Est-ce que quelqu'un peut indiquer ce que je fais mal?

service1.js:

var services = angular.module('myapp.services',[]);
services.factory('Service1', function() {
    // service code
});

service2.js:

var services = angular.module('myapp.services',[]);
services.factory('Service2', function() {
    // service code
});

mydirective.js:

angular.module('myappdirective', []).directive('myapp', ['Service1', 'Service2',
function(service1,service2) {
    // directive code
}]);
15
Jeff Storey

Cela vient de la documentation: 

Attention, l'utilisation de angular.module ('myModule', []) créera le module myModule et écrasera tout module existant nommé myModule. Utilisez angular.module ('myModule') pour récupérer un module existant. 

Trouvé ici: https://docs.angularjs.org/guide/module

45
aet

Ceci est possible, mais sera sujet aux erreurs, donc non recommandé

Faites de petites modifications à ce que vous faites déjà

Il suffit de ne pas déclarer à nouveau la variable de module dans d'autres fichiers que service1.js, ni de placer la définition de module dans un fichier qui lui est propre et d'inclure ces fichiers JS dans l'ordre suivant: Module.js, services.js, directive.js. marchera

0
Basav