如何向 angular 常量注入服务
How to inject service to angular constant
我想定义一个使用 $locale
服务的常量。常量是对象,所以我不能像控制器那样将它作为参数注入。我该如何使用它?
angular.module('app').constant('SOME_CONSTANT', {
'LOCALE': $locale.id.slice(0, 2)
})
您可以使用 $injector 手动抓取 $locale
。观察以下...
app.constant('SOME_CONSTANT', {
'LOCALE': angular.injector(['ng']).get('$locale').id.slice(0, 2)
});
这是不可能的,原因有二。
常量不能有依赖(见table底部https://docs.angularjs.org/guide/providers)
常量和提供者在 .config 函数(配置阶段)中可用,但服务($locale)仅在稍后可用(在 .运行 function/phase 中)
或者你可以创建服务类型的工厂,它可以有依赖关系并且可以创建对象或原语
angular.module('app')
.factory('LOCALE_ID', function($locale) {
return {'LOCALE': $locale.id.slice(0, 2)}
})
我想定义一个使用 $locale
服务的常量。常量是对象,所以我不能像控制器那样将它作为参数注入。我该如何使用它?
angular.module('app').constant('SOME_CONSTANT', {
'LOCALE': $locale.id.slice(0, 2)
})
您可以使用 $injector 手动抓取 $locale
。观察以下...
app.constant('SOME_CONSTANT', {
'LOCALE': angular.injector(['ng']).get('$locale').id.slice(0, 2)
});
这是不可能的,原因有二。
常量不能有依赖(见table底部https://docs.angularjs.org/guide/providers)
常量和提供者在 .config 函数(配置阶段)中可用,但服务($locale)仅在稍后可用(在 .运行 function/phase 中)
或者你可以创建服务类型的工厂,它可以有依赖关系并且可以创建对象或原语
angular.module('app')
.factory('LOCALE_ID', function($locale) {
return {'LOCALE': $locale.id.slice(0, 2)}
})