在抽象状态的url中的stateParams,ui-router,angularjs

时间:2015-02-22 20:56:46

标签: angularjs angular-ui-router

如果我有一个抽象的状态:

$stateProvider.
        state('drug', {
            abstract: true,
            url: '/drug/:drugId',
            template:
            '<ui-view></ui-view>',
            resolve: {
                drugId : ['$stateParams', function($stateParams){
                    return $stateParams.drugId;
                }]
            }
        }

有一些孩子状态,形式为:drug.x,drug.y 并且我想在应用程序的一个地方选择一个通过抽象状态传递给所有子状态的drugId,以便在我调用'drug.x'状态之后,它将具有drugId值 - 我在哪里以及如何使用drugId param调用药物状态? 我知道我不能称之为抽象状态。

感谢。

1 个答案:

答案 0 :(得分:3)

您已经通过公开$ stateParams.drugId作为解决方案完成了棘手的部分。现在,您只需将其注入子状态控制器,如下所示:

$stateProvider.state('drug.x', {
  controller: function(drugId) { } // drugId is injected from the resolve you defined in 'drug'
}

要将参数提供给drug.x,只需将其添加到转换参数:

$state.go('drug.x', { drugId: 123 });

<a ui-sref="drug.x({ drugId: scopeVariable })">Go to drug.x for {{ scopeVariable }}</a>