我使用angularjs 1.2.23并且我想创建一个提供程序,它将根据服务返回的某些结果加载状态。请考虑以下代码示例 -
app.provider("myStateProvider", function ($stateProvider, CustomService) {
CustomService.getMenus({}, {}).$promise.then(function (menu) {
$stateProvider.state(menu);
});
});

它让我失误 - 未知提供者:CustomServiceProvider
任何建议......
答案 0 :(得分:0)
当您向应用程序注入provider
时,它将被称为应用程序的配置阶段。在此阶段,服务无法访问,因为尚未创建服务。 (参考https://docs.angularjs.org/guide/providers)。
当您注入service
,factory
,controller
- 它已在运行块中注入时 - 您可以注入服务(例如作为CustomService
),但不是提供者 - 您没有注入,所以没关系(参考https://docs.angularjs.org/guide/di)。
您可以为CustomService
服务创建提供商:
app.provider("CustomService", function () {
... LOGIC GOES HERE (PUT GENERAL LOGIC RELATED TO THE SETUP PHASE OF THE SERVICE)
});
您以后可以将其注入myStateProvider
:
app.provider("myStateProvider", function ($stateProvider, CustomServiceProvider) { ... });
最后一件事:不要将提供商添加到提供商名称,只需执行以下操作:
app.provider("myState", function ($stateProvider) {
});
为什么?因为如果你需要注入它,你需要注入myStateProviderProvider
(Angular会自动添加" Provider"