为子状态的子状态构建ui.sref

时间:2015-11-18 09:40:07

标签: angularjs angular-ui-router

我想要实现的目标:

在主状态(/ model)的模板中,我有一个子状态阶段(/阶段)的链接,但我也希望能够从主状态直接链接到给定的子状态阶段(/ phase / 1 / task1)。

我的配置:

$stateProvider      
    .state('model', {
        url: '/model',
        views: {

            '': {
                templateUrl: 'model.tpl.html',
                controller: 'modelController'
            }
        },

    })

    .state('model.phase', {
        url: '/phase/{phaseId:int}',
        views: {
            '@main.model': {
                templateUrl: 'model.phase.tpl.html',
                controller: 'phaseController'
            }
        }            
    })

    .state('model.phase.task', {
        url: '/task/{taskId:int}',
        controller: 'taskController'
    })

};

在model.tpl.html中,我列出了包含一般信息的所有阶段,对于每个阶段,我都列出了该阶段的任务,如下所示:

<div ng-repeat="task in tasks | filter:{primary:true, knowledgeAreaId:area.id, phaseId:phase.id}:true" class="task" ng-class="{ active: task.active }">
   <div class="task__content" ui.sref="LINKHERE"></div>
</div>

在这里,我想构建一个直接从主模型页面到给定阶段的给定子页面的链接。

我在model.tpl.html中尝试过的是像这样添加ui.sref

<a ui.sref=".phase({ phaseId: task.phaseId}.task({ taskId: task.taskId})">

但是这给了我一个错误,所以你好像不能链接&#39;有财产的州。

如果我只想链接到一个阶段,那么以下工作就可以了:

<a ui.sref=".phase({ phaseId: task.phaseId}">

有没有正确的&#39; ui.router中的soloution用于此场景,或者我是否必须手动为href值构建字符串。这样我将url更改为我想要的路径,而不是更改为给定的状态。这样做似乎是错误的,当其他一切通过切换状态起作用时。

类似的东西:

http://localhost/#/model/phase/1/task1

1 个答案:

答案 0 :(得分:0)

这应该有效:

ui.sref=".phase.task({ phaseId: task.phaseId, taskId: task.taskId })"