Je souhaite écrire plusieurs constantes pour mon Angular JS app. Je veux les écrire dans un fichier séparé et je veux y accéder.
J'ai essayé avec IIFE (expression de fonction immédiatement appelée) comme ceci,
constants.js
var Constants = (function () {
var allConstants = {
"url": 'abc',
"name": "anijit",
"sn": "sau"
}
return allConstants
})();
console.log('defined constants', Constants)
Mais quand j'ai essayé d'y accéder, il affiche l'erreur Constants not defined
. Où j'ai fait la mauvaise chose?
Je veux y accéder en utilisant Constants.url
dans la manière et je ne veux pas faire d'appel $http
ou quelque chose comme ça Comment y parvenir?
En tant que tel, vous utilisez AngularJS, vous pouvez utiliser Constant Service . comme une constante peut être injecté n'importe où, y compris les appels de configuration dans l'application angularjs.
En outre, comme le nom l'indique, les constantes sont fixes, elles sont appliquées avant que d'autres méthodes ne soient fournies. Voir $ include.constant () pour plus de détails.
// 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);
}]);
fichier 1:
(function () {
'use strict';
angular.module('app', [
'app.constants'
]).value('CONSTANT_EXAMPLE', 'value example')
.value('OTHER_EXAMPLE', 'other example');
})();
fichier 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
};
}
})();
Vous pouvez utiliser un factory (J'utilise toujours toujours storage.factory.js dans mes projets). Facile à injecter partout et vous pouvez utiliser certaines fonctions pour configurer vos constantes ou les modifier un peu si vous le souhaitez.
angular.module('app')
.factory('storage', storageFactory);
function storageFactory() {
const data = {
serverAddress : 'http://server.address:port'
};
return data;
}