获取路径参数以解决

前端之家收集整理的这篇文章主要介绍了获取路径参数以解决前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我因为无法使用Angular-UI UI-Router而死亡。我有一个状态定义如下:
$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'
    });

由于文档说$ stateParams不可用,所以我使用$ state.current.params。应该没事。相反,我会死空气。我无法访问membersId来挽救我的生命。

要测试我的服务,并确保不是问题,我硬编码在一个memberId,控制器获取memberDetails结果以及simpleObj结果。所以,服务和控制器和工作伟大。

硬编码的例子:

$stateProvider
    .state('member',$state) {

                return FamilyService.getMember('52d1ebb1de46c3f103000002');

            }
        },controller: 'MemberController'
    });

即使文档说您无法以决定的方式使用$ stateParams,反正我也尝试过。它也不工作。

返回FamilyService.getMember($ stateParams.membersId);

在世界上我如何获得成员ID参数,以传递给FamilyService以解决

我没有多少头发要拉出来;所以有人救我。

我终于明白了。这很简单,在文档中。尽管阅读几次,我每次都忽略了。我需要注入$ stateParams来解决
$stateProvider
    .state('member',resolve : {
            simpleObj:  function(){
                return {value: 'simple!'};
            },$stateParams) {
                return FamilyService.getMember($stateParams.membersId);
            }
        },controller: 'MemberController'
    });

我仍然不明白为什么文档说这是不可能的。

Two Important $stateParams Gotchas

The $stateParams object is only populated after the state is activated
and all dependencies are resolved. This means you won’t have access to
it in state resolve functions. Use $state.current.params instead.
$stateProvider.state(‘contacts.detail’,{ resolve: {
someResolve: function($state){
//* We cannot use $stateParams here,the service is not ready //
// Use $state.current.params instead *// return $state.current.params.contactId + “!” }; },// … })

原文链接:https://www.f2er.com/angularjs/144284.html

猜你在找的Angularjs相关文章