gpt4 book ai didi

javascript - 将服务/常量注入(inject) Angularjs 中的提供程序

转载 作者:行者123 更新时间:2023-12-02 17:38:32 27 4
gpt4 key购买 nike

这里的问题是我能够访问 getRoutes(),但无法访问注入(inject)的常量 -“configuration”。我缺少什么?谢谢。

(function () {
'use strict';

var app = angular.module('app');

app.constant('configuration', {
PARTIAL_PATH: "/app/components/partials"
});

app.module('app', [
'routeService'
]);

var routeServiceModule = angular.module('routeService', ['common']);

routeServiceModule.provider('routeConfig',function () {

this.getRoutes = function () {
return [
{
url: '/login',
config: {
title: 'admin',
templateUrl: 'app/components/login/login.html'
}
}, {
url: '/',
config: {
templateUrl: 'app/components/dashboard/dashboard.html',
title: 'Dashboard'
}
}
];
};

this.$get = ['configuration', function (configuration) {

var service = {
getRoutes: getRoutes(),
configuration: configuration.PARTIAL_PATH
};

return service;
}];

app.config(['$routeProvider', 'routeConfigProvider', function ($routeProvider, routeConfigProvider) {
//Unable to get the configuration value
console.log(routeConfigProvider.configuration);
//Console is returning as "undefined"
routeConfigProvider.getRoutes().forEach(function(r) {
$routeProvider.when(r.url, r.config);
});
$routeProvider.otherwise({ redirectTo: '/' });
}
]);
})();

创建了一个 plunkr 演示:http://plnkr.co/edit/2TIqgxMxBJEPbnk2Wk6D?p=preview

最佳答案

(关于您最后的评论,使用 plnkr)

结果是预期的。

在配置时(在 app.config() 内),您可以访问定义的原始提供程序,这允许您调用“私有(private)”方法或字段 (testItem1) 并将其配置为运行时使用。 “私有(private)”,因为它们在运行时无法访问。

在运行时(在 app.run() 和应用程序的其余部分内),当您请求为其编写提供程序的依赖项时, Angular 注入(inject)器会向您提供提供程序的 $get 方法的结果,不是提供商本身,因此您无法访问“私有(private)”功能。

此页面是我的启蒙之路:AngularJS: Service vs provider vs factory

关于javascript - 将服务/常量注入(inject) Angularjs 中的提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416016/

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