【发布时间】:2015-03-13 14:50:12
【问题描述】:
我正在尝试使用不同的解析在我的 UI 路由器配置中创建父子关系,但它似乎不起作用。我希望拥有一个带有子状态的共同父状态,以控制状态是处于编辑模式还是新模式。根据模式,状态的解析是不同的。
我所拥有的基本上是这样的:
.state('main.details', {
url: "/details",
templateUrl: "modules/details.html",
abstract: true
})
.state('main.details.new', {
controller: "DetailsCtrl as detailsCtrl",
resolve : {
detail: ['$stateParams', 'NewService', function ($stateParams, NewService) {
return NewService.getDetail($stateParams.detailId, true);
}]
}
})
.state('main.details.edit', {
controller: "DetailsCtrl as detailsCtrl",
resolve : {
detail: ['$stateParams', 'EditService', function ($stateParams, EditService) {
return EditService.getDetail($stateParams.detailId, true);
}]
}
})
这样做,我明白了:
Error: [$injector:unpr] Unknown provider: detailProvider <- detail <- DetailsCtrl
有没有办法让父状态只定义 URL 和 templateUrl,然后让子状态具有不同的解析?
【问题讨论】:
-
该错误表明 DetailsCtrl 不存在。您确定您在您的应用中正确注册了该控制器吗?
-
您的 NewService 或 EditService 返回什么?一个承诺还是一些结果值?
-
两者都返回一个承诺,是的。
标签: angularjs angular-ui-router