2015-09-29 30 views
0

我有下面的代码来描述我的主要国际化模块:角不变另一个模块的配置阶段未定义

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常量在配置函数中未定义。

任何想法为什么?

回答

2

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