Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to define constants for Angular JS in a different file

I want to write several constants for my Angular JS app. I want to write them in a separate file and want to access them.

I have tried with IIFE (Immediately Invoked Function Expression) like this,

constants.js

var Constants = (function () {

    var allConstants = {
        "url": 'abc',
        "name": "anijit",
        "sn": "sau"
    }

    return allConstants
})();
console.log('defined constants', Constants)

But when I have tried to access them it show Constants not defined error. Where I have done the wrong thing?

I want to access them using Constants.url in the way and I don't want to make any $http call or something like that. How to achieve that?

like image 397
Anijit Sau Avatar asked Jul 11 '17 13:07

Anijit Sau


2 Answers

As such you are using AngularJS, you can use Constant Service. as a constant can be injected anywhere including configuration calls in angularjs application.

Also, as the name suggests, the constants are fixed, they get applied before other provide methods. See $provide.constant() for more detail.

// 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);
}]);
like image 135
Siddharth Pandey Avatar answered Oct 26 '22 14:10

Siddharth Pandey


You can use a factory (I personnaly always use storage.factory.js in my projects). Easy to inject everywhere and you can use some functions to setup your constants or change them a little bit if you want.

angular.module('app')
    .factory('storage', storageFactory);

    function storageFactory() {
        const data = {
            serverAddress : 'http://server.address:port'
        };

        return data;       
    }
like image 44
Alburkerk Avatar answered Oct 26 '22 14:10

Alburkerk