値を保存するだけの場合は、プロバイダーに関するAngularのドキュメントに従って、値のレシピを使用する必要があります。
var myApp = angular.module('myApp', []);
myApp.value('clientId', 'a12345654321x');
次に、次のようなコントローラーで使用します。
myApp.controller('DemoController', ['clientId', function DemoController(clientId) {
this.clientId = clientId;
}]);
同じことは、プロバイダー、ファクトリー、またはサービスを使用して実現できます。これらは「プロバイダーレシピの上の構文糖」にすぎないためです。ただし、Valueを使用すると、最小限の構文で必要な結果を得ることができます。
もう1つのオプションはを使用する$rootScope
ことですが、他の言語でグローバル変数を使用してはならないのと同じ理由で使用すべきではないため、実際にはオプションではありません。慎重に使用することをお勧めします。
すべてのスコープはから継承されるため$rootScope
、変数が$rootScope.data
あり、誰かdata
がすでに定義されていることを忘れて$scope.data
ローカルスコープで作成した場合、問題が発生します。
この値を変更して、すべてのコントローラーで永続化したい場合は、オブジェクトを使用してプロパティを変更します。JavaScriptは「参照のコピー」によって渡されることに注意してください。
myApp.value('clientId', { value: 'a12345654321x' });
myApp.controller('DemoController', ['clientId', function DemoController(clientId) {
this.clientId = clientId;
this.change = function(value) {
clientId.value = 'something else';
}
}];
JSFiddleの例