J'ai hérité du code qui utilise un objet global pour stocker les services angulaires. Ces services sont attachés à l'objet global dans la fonction d'exécution du module angulaire. Ma question est la suivante: cela peut-il causer des problèmes sur la route? Quel genre de problème cela cause-t-il pour les tests? Passer de tels services semble beaucoup plus facile que d'injecter tous les services dans chaque contrôleur, donc je vois pourquoi cela est fait. Quels sont les autres arguments pour ne pas le faire? Voici un code pour illustrer de quoi je parle:Éviter l'injection de dépendance angulaire à l'aide de l'objet global
// vars
var globalObject =
{
ng: {},
};
// Setup module
var myModule = angular.module("myModule", []);
myModule.config(doStuff);
myModule.run(setUpGlobals);
// Setup app globals
function setUpGlobals(ngRootScope, ngHttp, ngTimeout)
{
globalObject.rootScope = ngRootScope;
// angular services
globalObject.ng.http = ngHttp;
globalObject.ng.Timeout = ngTimeout;
}
setUpGlobals.$inject = ['$rootScope', '$http', '$timeout'];
Merci! Je n'étais pas au courant que les services sont instanciés à la demande. https://www.bennadel.com/blog/2715-services-and-factories-are-instantiated-on-demand-in-angularjs.htm –
De rien. La plupart du temps, cela ne pose pas de problème, mais cela peut casser des fonctionnalités qui reposent sur un comportement naturel, par exemple un chargement paresseux. – estus
encore une question: les services agissent-ils comme des singletons entre différents modules? Ils font pour le même module mais si le module A et le module B injectent serivce 1, le service 1 sera-t-il partagé? –