Bhanuprakash Bysani
Bhanuprakash Bysani

Reputation: 59

Set global constants in AngularJs

I am trying to create constants js file in angular js for an application. I am using below code to implement constants for entire application. It's working fine.

<code>
// app.js
angular.module('myApp', [
        'ngCookies',
        'ngResource',
        'ngSanitize',
        'ngRoute'
    ])
    .constant('config', {
        mySetting: 42
    })
    .config(function ($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'views/main.html',
                controller: 'MainCtrl'
            })
            .otherwise({
                redirectTo: '/'
            });
    });
</code>

My concern is in app.js file I want to write only routing, for constants I want to write separate file and I will call same file for all the controllers in my application.

For entire application might be 200+ constants I want to declare, so I want to make it is separate file or split constants file for controllers wise.

Please guide me which way is easy for maintenance.

Thanks in advance

Upvotes: 1

Views: 6726

Answers (3)

Mohmad Iqbal Lone
Mohmad Iqbal Lone

Reputation: 459

Lets Assume you want to have a constant named serviceUrl in your application .here is a simple way

angular.module('myApp', ['ngRoute'])
.value('serviceUrl','http://localhost:8080/hello')

'ngRoute' is optional. ignore it in case your application is not using ngRoute.

Can access it inside a service as posting some data

angular.module('myApp').
service('myService', ['$http', 'serviceUrl',function($http,serviceUrl){
    this.getData= function(data){
        console.log(JSON.stringify(data));
        return $http({
            method: 'POST',
            url: serviceUrl
            data: data
        })

}}

Upvotes: 0

Karthik N
Karthik N

Reputation: 951

You can also maintain a separate file by using another module to handle all your constant, factory, services or value. To handle your constants the below code will give you and idea

Eg:

include your app.js file after that your constant.js script file

var myApp = angular.module("myApp", ['myConstants']); //constants module injection
myApp.controller("myController", ["$scope", "myValue", function() {
....
}]);

in your constant.js

angular.module("myConstants", []).constant('myValue', 'The value');

For more understanding refer http://www.learn-angular.org/#!/lessons/handling-complexity

Upvotes: 2

Hardik Vaghani
Hardik Vaghani

Reputation: 2173

You can define constants this way

app.value('config', {
   "key1": "value1",
   "key2": "value2"
});

and in controller you can access this way config.key1 OR config.key2. In this way you can define constants as may as you require.

Note: Do not forget to give reference/inject to config.

Regards

Upvotes: 2

Related Questions