Angularjs 获取用于解析的路由参数
我会被我无法摸索角度UI路由器的能力所扼杀。我的州定义如下:Angularjs 获取用于解析的路由参数,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我会被我无法摸索角度UI路由器的能力所扼杀。我的州定义如下: $stateProvider .state('member', { url: '/member/:membersId', templateUrl: 'templates/member.html', resolve : { // From examples for testing simpleObj: function(){
$stateProvider
.state('member', {
url: '/member/:membersId',
templateUrl: 'templates/member.html',
resolve : {
// From examples for testing
simpleObj: function(){
return {value: 'simple!'};
},
memberDetails : function(FamilyService,$state) {
return FamilyService.getMember($state.current.params.membersId);
}
},
controller: 'MemberController'
});
因为文档说$stateparms不可用,所以我使用$state.current.params。应该没问题。相反,我得到了死空气。我无法访问成员SID
以拯救我的生命
为了测试我的服务并确保它没有问题,我硬编码了一个membersId,控制器得到memberDetails
结果以及simpleObj
结果。所以,服务和控制器工作得很好
硬编码的示例:
$stateProvider
.state('member', {
url: '/member/:membersId',
templateUrl: 'templates/member.html',
resolve : {
// From examples for testing
simpleObj: function(){
return {value: 'simple!'};
},
memberDetails : function(FamilyService,$state) {
return FamilyService.getMember('52d1ebb1de46c3f103000002');
}
},
controller: 'MemberController'
});
尽管文档说在解析中不能使用$stateParams,但我还是尝试过。它也不起作用
returnfamilyservice.getMember($stateParams.membersId)代码>
我究竟如何才能将membersId
param传递到FamilyService中进行解析
我没有多少头发可以拔;所以,请救救我。我终于明白了。这很简单,而且在文档中。尽管读了好几遍,但每次我都忽略了它。我需要将$stateParams注入解析:
$stateProvider
.state('member', {
url: '/member/:membersId',
templateUrl: 'templates/member.html',
resolve : {
simpleObj: function(){
return {value: 'simple!'};
},
memberDetails : function(FamilyService,$stateParams) {
return FamilyService.getMember($stateParams.membersId);
}
},
controller: 'MemberController'
});
我仍然不明白为什么文件上说这是不可能的
两个重要的$stateParams Gotchas
$stateParams对象仅在激活状态后填充
所有依赖项都已解决。这意味着您将无法访问
它具有状态解析功能。改用$state.current.params。
$stateProvider.state('contacts.detail',{resolve:{
someResolve:function($state){
//*我们无法在此处使用$stateParams,服务尚未就绪//
//改用$state.current.params*//
返回$state.current.params.contactId+“!”
};},//…})
对不起,文件不正确。我删除了“gotcha”,这样就不会误导任何人前进。@nFiteloop非常感谢您更新它。文档似乎在说$route.current.params
,这在我的情况下似乎起到了作用<代码>请注意ngRoute.$routeParams仍将引用这些解析功能中的上一条路由。改用$route.current.params访问新的路由参数。
@seb您查看的文档错误: