web-dev-qa-db-ja.com

別のファイルでAngular JSの定数を定義する方法

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の呼び出しなどはしたくありません。それを達成する方法は?

4
Anijit Sau

そのため、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);
}]);
10

ファイル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
    };
  }

})();
1
Eduardo Lima

factoryを使用できます(私は自分のプロジェクトで常にstorage.factory.jsを使用しています)。どこにでも簡単に注入でき、いくつかの関数を使用して定数を設定したり、必要に応じて少し変更したりできます。

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

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

        return data;       
    }
1
Alburkerk