ボクココ

個人開発に関するテックブログ

AngularJS の constant と value の違い

value を使って詰まったことがあったのでメモ.

value に関するドキュメントにはこうある。

Value services are similar to constant services, except that they cannot be injected into a module configuration function (see angular.Module#config) but they can be overridden by an Angular decorator.

んで、自分はAngular translate でロケールファイルを config() 時に value で定義したサービスをDIしてたんだが、これがどうも読み込めずに詰まった。

改めて上記をみるとずばり config 時にモジュールを注入できない点が consntant serviceと違うとあった。

ということで、 value ではなく、 constant でserviceをconfigへDIしたところうまくいった。

angular.module('koboApp', [
  'pascalprecht.translate'
])

.config ($translateProvider, langJa, langEn) ->
  console.log langJa
  $translateProvider.translations('en', langEn.langs)
  $translateProvider.translations('ja', langJa.langs)
  $translateProvider.preferredLanguage('ja')

.constant 'langJa',
  langs:
    GREETING: 'こんにちは、世界!'

これでAngularJS のI18N に関してうまくいったので、そのことについては気が向いたら後日書く。

また、上記英語にあった decorator に関しても調べておこう。