Le script:
app = angular.module('app', []) app.factory 'MyFactory', -> val: 'Clark Kent' app.controller 'MainCtrl', ($scope, MyFactory) -> MyFactory.val = 'Waldo' $scope.myFactory = MyFactory
Mettez ceci dans la console:
angular.injector(['ng','app']).invoke(function(MyFactory) { console.log(MyFactory); })
… et au lieu de Waldo
, vous avez Clark Kent
!
Pourquoi ne retourne-t-il pas le même objet?
Découvrez le plunkr
Les services en angulaire sont des singletons dans le sens où ils ne sont créés qu'une fois par injecteur.
angular.injector
crée cependant une nouvelle fonction d'injecteur.
Pour obtenir l'injecteur d'application en cours: angular.element(domElement).injector()
Pour votre exemple:
angular.element(document.querySelector('html')).injector().invoke(function(MyFactory) { console.log(MyFactory); })