花费时间在谷歌搜索和梳理文档angular ui-router docs无济于事......似乎这应该是非常基本的。
快速版
<a ui-sref="parent({param: value}).child">go</a>
或者
$state.go("parent.child", {parent:{param: value}})
- 我的想法是param
应用于parent
,而不是child
,从而产生了/parent/value/child
等网址
长版
<小时/> 设置:
假设我有一个采用参数projectId的状态,如下所示:
.state('manage.project', {
url: '/project/:projectId',
templateUrl: 'fragments/projectTemplate.html',
controller: 'projectController'
}
...然后沿着状态树,我有许多依赖于该参数的子状态之一:
.state('descendantOfProjectState.grandchildState', {
url: '/projectInfo',
templateUrl: 'fragments/projectInfo.html',
controller: function($state){
var projectId = $state.params.projectId;
}
}
通常情况下,首先会访问父母:
$state.go('manage.project', {projectId: 123})
此时,URL看起来像
/管理/项目/ 123 /富/酒吧/ projectInfo
从那里,导航到子状态就像
一样简单$state.go("manage.project.foo.bar.descendantOfProjectState.grandchildState");
并且可以通过$ state.params访问projectId,因为它位于URL中 - 无需配置每个子状态以明确期望projectId(想知道这是否是我的致命缺陷)。
问题:
现在需要跳转到那个孙子状态,而不首先访问父状态。也就是说,我想直接进入
/管理/项目/ 123 /富/酒吧/ projectInfo
来自 应用程序(所以,我想转到状态,而不是网址)。
当我在导航到的路线中间时,如何为项目状态指定projectId参数?
$state.go('manage.project.foo.bar.descendant.grandchild', {projectId: 123})
不通知需要id的祖先状态。
我怎么能一下子告诉ui-router直接进入那个孙子状态,同时将projectId传递给位于路线中间的manage.project状态?