Przede wszystkim zmodyfikowana wersja twojej usługi.
a)
var app = angular.module('app',[]);
app.factory('ExampleService',function(){
return {
f1 : function(world){
return 'Hello' + world;
}
};
});
Zwraca obiekt, nic nowego.
Teraz sposobem na uzyskanie tego z konsoli jest
b )
var $inj = angular.injector(['app']);
var serv = $inj.get('ExampleService');
serv.f1("World");
c)
Jedną z rzeczy, które robiłeś tam wcześniej, było założenie, że fabryka aplikacji zwraca ci samą funkcję lub jej nową wersję. Co nie jest prawdą. Aby uzyskać konstruktora, musiałbyś to zrobić
app.factory('ExampleService',function(){
return function(){
this.f1 = function(world){
return 'Hello' + world;
}
};
});
Zwraca to konstruktor ExampleService, na którym będziesz musiał zrobić „nowy”.
Lub alternatywnie
app.service('ExampleService',function(){
this.f1 = function(world){
return 'Hello' + world;
};
});
Zwraca to nową ExampleService () po wstrzyknięciu.
angular.element('*[ng-app]').injector()
powinien działać we wszystkich przypadkach.