角度常量在另一个模块的配置阶段未定义

时间:2015-09-29 17:49:28

标签: javascript angularjs

我有以下代码描述了我的主要i18n模块:

angular
  .module('myApp.i18n', ['pascalprecht.translate', 'myApp.i18n.constants'])
  .config(config);

config.$inject = ['$translateProvider', 'crTranslations'];
function config($translateProvider, crTranslations) {
    $translateProvider.translations('sr-latn', crTranslations.sr);
    $translateProvider.translations('en', crTranslations.en);
    $translateProvider.preferredLanguage('sr-latn');
};

我有另一个模块,其中包含以下代码:

angular
    .module('myApp.i18n.constants', [])
    .constant("crTranslations", crTranslations);

var crTranslations = {
    "en": {
        //english translations
    },
    "sr": {
        //serbian translations
    }
}

我在index.html中包含了两个脚本文件,并且两个模块都被加载(主要文件之前的常量),但是在配置函数中未定义crTranslations常量。

知道为什么吗?

1 个答案:

答案 0 :(得分:2)

与Angular模块的管理方式无关。由于JS hoistingvar crTranslations语句之前已声明.constant("crTranslations", crTranslations),但仅在此之后被分配给对象。