我尝试将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
它未定义。
为什么会这样?
我做错了什么?
答案 0 :(得分:1)
这有效:
function OpsConstantService(opsConstants) {
return {
OPSCONSTANTS : opsInsightConstants,
$get:function() {
return {
// something
}
}
}
}
app.config(['OpsConstantServiceProvider', function(OpsConstantServiceProvider) {
console.log(OpsConstantServiceProvider.OPSCONSTANTS);
}]);
但是,这不好) 其实你想做什么?收集常数并创建一个大对象? 然后你可以这样做:
app.constant('test1', {test: 1});
app.constant('test2', {test: 2});
app.constant('test3', {test: 3});
app.constant('commons', {});
app.config(['test1', 'test2', 'test3', 'commons', function(test1, test2, test3, commons) {
commons.test1 = test1;
commons.test2 = test2;
commons.test3 = test3;
}]);