Angular JS appのいくつかの定数を書きたいのですが、別のファイルに書き込んでアクセスしたいのですが。
私はこのようにIIFE(Immediately Invoked Function Expression)を試してみましたが、
constants.js
var Constants = (function () {
var allConstants = {
"url": 'abc',
"name": "anijit",
"sn": "sau"
}
return allConstants
})();
console.log('defined constants', Constants)
しかし、それらにアクセスしようとすると、Constants not defined
エラーが表示されます。どこで間違ったことをしたのですか?
Constants.url
を使用してそれらにアクセスしたいのですが、$http
の呼び出しなどはしたくありません。それを達成する方法は?
そのため、AngularJSを使用しているため、 Constant Service を使用できます。定数は、angularjsアプリケーションの構成呼び出しを含め、どこにでも注入できます。
また、名前が示すように、定数は固定されており、他の提供メソッドの前に適用されます。詳細は $ provide.constant() を参照してください。
// Storing a single constant value
var app = angular.module('myApp', []);
app.constant('appName', 'My App');
// Now we inject our constant value into a test controller
app.controller('TestCtrl', ['appName', function TestCtrl(appName) {
console.log(appName);
}]);
// Storing multiple constant values inside of an object
// Note: values in the object mean they can be modified
var app = angular.module('myApp', []);
app.constant('config', {
appName: 'My App',
appVersion: 1.0,
apiUrl: 'http://www.facebook.com?api'
});
// Now we inject our constant value into a test controller
app.controller('TestCtrl', ['config', function TestCtrl(config) {
console.log(config);
console.log('App Name', config.appName);
console.log('App Name', config.appVersion);
}]);
ファイル1:
(function () {
'use strict';
angular.module('app', [
'app.constants'
]).value('CONSTANT_EXAMPLE', 'value example')
.value('OTHER_EXAMPLE', 'other example');
})();
ファイル2:
(function () {
'use strict';
angular.module('app.example-use', [])
.factory('example', example);
example.$inject = ['CONSTANT_EXAMPLE']; // and others injections
function example(CONSTANT_EXAMPLE) { // and others injections
function getConstantExample() {
var option = CONSTANT_EXAMPLE;
// use ...
}
return {
getConstantExample: getConstantExample
};
}
})();
factoryを使用できます(私は自分のプロジェクトで常にstorage.factory.jsを使用しています)。どこにでも簡単に注入でき、いくつかの関数を使用して定数を設定したり、必要に応じて少し変更したりできます。
angular.module('app')
.factory('storage', storageFactory);
function storageFactory() {
const data = {
serverAddress : 'http://server.address:port'
};
return data;
}