小编Chr*_*ult的帖子

角度ui-router和从父级访问子状态参数

编辑了更多细节

我相信新手问题在这里.我正在尝试做一些我认为会直截了当的事情,但我没有得到任何结果.

基本上,我有一个有几个子州的父州.我想在父状态的解析中加载一些数据,以便它可供所有子状态使用.为此,我需要一个传递给子状态的参数(上下文)可用.我通过它得到它$state.params.代码(为清楚起见省略了一些)是这样的:

.state('pbr', {
    url: "/pbr",
    templateUrl: "pbr/pbr.html",
    controller: "pbrBaseCtrl",
    abstract: true ,
    resolve: {
        dpts: function(NavDPT, $state) {
               return NavDPT.query({context: $state.params.context}).$promise;
              }
        }    

})
.state('pbr.review', {
        url: "/review/{context}?div",
        templateUrl: "pbr/pbr-review.html",
        controller: "pbrReviewCtrl"
    })
Run Code Online (Sandbox Code Playgroud)

根据我的理解,$state.params应该包含父和子状态的传递参数,而$stateParams只有活动状态的参数.

无论如何,我所看到的是$state.params在解决问题发生之前没有填充,因此数据获取失败.它最终会填充.$state.params在获取数据之前,我似乎无法找到等待可用的方法.我试过在超时等情况下包装东西

我试图改为使用查询参数,并在父级别指定了查询参数,我观察到了同样的行为 - 当解决问题发生时,newcontext尚不可用.

 .state('pbr', {
            url: "/pbr?newcontext",
            templateUrl: "pbr/pbr.html",
            controller: "pbrBaseCtrl",
            abstract: true ,
            resolve: {
                dptsResource: 'NavDPT',
                dpts: function(dptsResource, $state, $log) {
                    $log.info("state.params is also ",$state.params);
                    return dptsResource.query({context: $state.params.newcontext}).$promise;
                }
            }

        }) …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-ui-router

14
推荐指数
1
解决办法
8790
查看次数

标签 统计

angular-ui-router ×1

angularjs ×1