Si vous souhaitez simplement stocker une valeur, selon la documentation Angular sur les fournisseurs , vous devez utiliser la recette Value:
var myApp = angular.module('myApp', []);
myApp.value('clientId', 'a12345654321x');
Ensuite, utilisez-le dans un contrôleur comme celui-ci:
myApp.controller('DemoController', ['clientId', function DemoController(clientId) {
this.clientId = clientId;
}]);
La même chose peut être obtenue en utilisant un fournisseur, une usine ou un service car ils ne sont «que du sucre syntaxique en plus d'une recette de fournisseur», mais en utilisant Value, vous obtiendrez ce que vous voulez avec une syntaxe minimale.
L'autre option est d'utiliser $rootScope
, mais ce n'est pas vraiment une option parce que vous ne devriez pas l'utiliser pour les mêmes raisons que vous ne devriez pas utiliser de variables globales dans d'autres langues. Il est conseillé de l'utiliser avec parcimonie.
Étant donné que toutes les étendues héritent de $rootScope
, si vous avez une variable $rootScope.data
et que quelqu'un oublie qui data
est déjà défini et crée $scope.data
dans une étendue locale, vous rencontrerez des problèmes.
Si vous souhaitez modifier cette valeur et la faire persister sur tous vos contrôleurs, utilisez un objet et modifiez les propriétés en gardant à l'esprit que Javascript est passé par "copie d'une référence" :
myApp.value('clientId', { value: 'a12345654321x' });
myApp.controller('DemoController', ['clientId', function DemoController(clientId) {
this.clientId = clientId;
this.change = function(value) {
clientId.value = 'something else';
}
}];
Exemple JSFiddle