获取路径参数以解决

我因为无法使用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 + “!” }; },// … })

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...