2014-07-27 4 views
1

J'ai un ensemble de services qui représentent une logique dorsale, appelée par différents contrôleurs angulaires.Appeler des services angulaires globalement

Pendant le développement, cependant, je veux appeler ces services directement, afin de les tester de manière isolée, à partir de la console Javascript du navigateur. Comment cela peut-il être fait?

Dire qu'il ya

app.service('service1', function() { 
    this.sayHello = function() { 
     return "Hello" 
    }; 
}); 

maintenant de la console Javascript,

app.somethingToGetService('service1').sayHello() 

?

+2

Pour tester votre service, vous devez écrire un test unitaire. Ne les appelez pas depuis la console JavaScript. –

+1

ce cas d'utilisation est rare mais vous pouvez toujours l'obtenir à partir de $ injector: '$ injector.get ('service1'). SayHello();': http://plnkr.co/edit/w5gjftCaBDIwm8J7LCE8?p=preview –

+0

Mais comment accéder à $ injector depuis la console Javascript (globalement)? Faire angular.injector() ne fonctionne pas. – Ivan

Répondre

1

Vous pouvez obtenir injecteur pour le module et de lui rendre service:

angular.injector(['ng', 'myApp']).get('service1').sayHello() 
+0

si ça marche, la partie "ng" est non intuitive – Ivan

+0

façon, qui est censé être plus correct, car il ne réinstalle pas l'injecteur est: 'angular.element (document) .injector(). get (" service1 "). sayHello()' (il suppose que ng -app est défini sur le corps ou la balise html) – Ivan

Questions connexes