我想定义一个使用$locale
服务的常量。常量是对象,所以我不能像在控制器中那样把它作为参数注入。我怎么使用它?
angular.module('app').constant('SOME_CONSTANT', {
'LOCALE': $locale.id.slice(0, 2)
})
这是不可能的,原因有两个。
-
常数不能有依赖关系(见表格底部https://docs.angularjs.org/guide/providers)
-
常量和提供商在。config函数(配置阶段)中可用,但服务($locale)只在后面可用(在。run function/阶段)
或者你可以创建服务类型工厂,它可以有依赖关系,可以创建对象或原语
angular.module('app')
.factory('LOCALE_ID', function($locale) {
return {'LOCALE': $locale.id.slice(0, 2)}
})
你可以用$injector手动抓取$locale
。
app.constant('SOME_CONSTANT', {
'LOCALE': angular.injector(['ng']).get('$locale').id.slice(0, 2)
});
JSFiddle示例