【发布时间】:2018-04-25 11:14:53
【问题描述】:
我尝试将service 更改为provider 以获得访问config 阶段。
provider 在其他模块中。
var app = angular.module('ops.services');
app.constant('opsConstants', {
GID: 'UA1'
});
app.provider('OpsConstantService', OpsConstantService);
OpsConstantService.$inject = ['opsConstants'];
function OpsConstantService(opsConstants) {
return {
$get:function() {
return {
OPSCONSTANTS : opsInsightConstants,
}
}
}
}
My app module 依赖相同,并且提供了DI。
var opsApp = angular.module('opsApp', ['ui.router', 'ops.services', 'angular-momentjs']);
现在,在我的应用程序中,routing 我需要访问常量值。
opsApp.config(routerConfig);
routerConfig.$inject = ['$stateProvider', '$urlRouterProvider','OpsConstantServiceProvider'];
function routerConfig($stateProvider, $urlRouterProvider,OpsConstantServiceProvider) {
$urlRouterProvider.otherwise("/home/dashboard/");
$stateProvider
.state('Modal', {
url: .....
但如果我尝试记录OpsConstantServiceProvider.OPSCONSTANTS,它是未定义的。
为什么会这样?
我做错了什么?
【问题讨论】:
-
如果你需要一个常量,就请求一个常量。 app.provider => app.constant('OpsConstant', {const1: 1, const2: 2}) 然后从那里访问它。
-
@Vitalii 还有更多的
constant函数。这只是部分示例。 -
当然。但是常量并不意味着不是一个对象。将常量分组到正确命名的对象(一、二、五、无米)中,并使用 app.constant 在 Angular 的 DI 中注册这些对象。
标签: javascript angularjs angular-ui-router