/ / ¿Puedo crear una fábrica para crear servicios en AngularJS? - angularjs, angularjs-service, angularjs-factory

¿Puedo crear una fábrica para crear servicios en AngularJS? - angularjs, angularjs-servicio, angularjs-factory

Tengo este servicio que me gustaría usar, pero podríaSucede que algunas partes de mi aplicación requieren el mismo servicio pero con diferentes parámetros para usar internamente. Como los servicios siempre se refieren a la misma instancia hasta donde yo entiendo, esto significaría tener que editar manualmente los parámetros en todas partes antes de realizar una acción, o pasarlos a cada función. Esto se volvería complicado muy rápido y me preguntaba si sería posible crear una fábrica para inicializar las diferentes versiones del servicio que necesito.

Algo como esto, por ejemplo:

function FooService(){
this.setParams = function(params){
...
}
};

function FooServiceFactory(){
return{
createService: function(name, params){
var serv = new FooService();
serv.setParams(params);
ServiceModule.service(name, serv);
}
}
};

Respuestas

0 para la respuesta № 1

También puedes crear fábricas.

app.factory("InstantiateMe", [function() {
return function(params)
{
// some code
};
}]);
app.controller("Ctrl", ["InstantiateMe", function(InstantiateMe) {
var instance = new InstantiateMe({param: "value"});
}]);

En resumen, la función de fábrica devuelve solo eso: una fábrica. Su valor de retorno puede ser un objeto, una función o, en este caso particular, un constructor. De esta manera puede crear instancias múltiples de su servicio deseado.

Aquí hay un buen artículo sobre el tema, elaborando sobre lo que he resumido, que puede encontrar útil.