gpt4 book ai didi

javascript - ui 路由器中的 Angular Provider 访问

转载 作者:行者123 更新时间:2023-12-03 02:01:07 25 4
gpt4 key购买 nike

我尝试将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,
}
}
}
}

我的应用程序模块依赖于相同的模块,并且已提供DI

var opsApp = angular.module('opsApp', ['ui.router',  'ops.services', 'angular-momentjs']);

现在,在我的应用程序中,路由我需要访问常量值。

opsApp.config(routerConfig);

routerConfig.$inject = ['$stateProvider', '$urlRouterProvider','OpsConstantServiceProvider'];

function routerConfig($stateProvider, $urlRouterProvider,OpsConstantServiceProvider) {
$urlRouterProvider.otherwise("/home/dashboard/");

$stateProvider
.state('Modal', {
url: .....

但是如果我尝试记录 OpsConstantServiceProvider.OPSCONSTANTS 它是未定义的。

为什么会这样?

我做错了什么?

最佳答案

这有效:

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;
}]);

关于javascript - ui 路由器中的 Angular Provider 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50020876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com