Angularjs 获取用于解析的路由参数

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(){

我会被我无法摸索角度UI路由器的能力所扼杀。我的州定义如下:

$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您查看的文档错误: