如何在不同的文件中为Angular JS定义常量

时间:2017-07-11 13:36:47

标签: javascript angularjs iife

我想为我的Angular JS应用程序编写几个常量。我想将它们写在一个单独的文件中,并希望访问它们。

我已尝试使用IIFE(立即调用函数表达式),

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调用或类似的事情。如何实现?

3 个答案:

答案 0 :(得分:10)

因此您使用的是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 :(得分:1)

您可以使用工厂(我个人总是在我的项目中使用storage.factory.js)。易于在任何地方注入,您可以使用一些函数来设置常量,或者根据需要稍微更改它们。

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

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

        return data;       
    }

答案 2 :(得分:1)

文件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
    };
  }

})();