【发布时间】:2015-01-11 19:24:50
【问题描述】:
我有一个这样定义的 UI 路由器(为简单起见进行了修剪):
$stateProvider
.state('someState', {
resolve: {
model: ['modelService', 'info', function (modelService, info) {
return modelService.get(info.id).$promise;
}]
},
controller: 'SomeController'
});
此someState 状态正在使用依赖于model 解析的工厂/服务。它是这样定义的,AngularJS 在此处抛出 Unknown provider: modelProvider 错误:
angular
.module('someModule')
.factory('someService', someService);
someService.$inject = ['model'];
function someService(model) { ... }
但是,在此状态的控制器中使用相同的 model 解析工作正常:
SomeController.$inject = ['model'];
function SomeController(model) { ... }
所以我了解到 UI 路由器正在延迟 SomeController 的 DI,直到解析发生,这使得 AngularJS 不会抛出错误。但是,当将该解析作为对someService 的依赖时,为什么没有发生同样的延迟?解析仅适用于控制器吗?如果是这种情况,我如何在工厂/服务中使用解析?
【问题讨论】:
-
您的要求听起来像是一个非常循环的依赖链。服务永远不需要依赖解析,但您可以在解析时将数据绑定回服务
标签: javascript angularjs angular-ui-router