stateParams in url of abstract state, ui-router, angularjs

stateParams in url of abstract state, ui-router, angularjs

如果我有一个抽象状态:

$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 参数调用药物状态? 我知道我不能调用抽象状态本身。

谢谢。

您已经通过公开 $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>