Angularjs 角度UI路由器中的嵌套状态问题

Angularjs 角度UI路由器中的嵌套状态问题,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我试图在同一个配置文件中创建两个单独的URL状态 我遵循下面的模板 $stateProvider.state('parent'){ 数据:{ customData1:“你好”, customData2:“世界!” } }) .state('parent.child'{ 数据:{ //从“父级”继承的customData1 //但我们将覆盖customData2 customData2:“UI路由器!” } });您可以添加您用来打电话的代码吗。 您应该这样称呼: /reports/moveFr

我试图在同一个配置文件中创建两个单独的URL状态

我遵循下面的模板

$stateProvider.state('parent'){
数据:{
customData1:“你好”,
customData2:“世界!”
}
})
.state('parent.child'{
数据:{
//从“父级”继承的customData1
//但我们将覆盖customData2
customData2:“UI路由器!”
}

});您可以添加您用来打电话的代码吗。 您应该这样称呼:

/reports/moveFrom/drillDown
如果您不这样做,请更改一次并检查

这是库中的一段:

$stateProvider .状态(“联系人”{ 摘要:没错, url:“/contacts”

    // Note: abstract still needs a ui-view for its children to populate.
    // You can simply add it inline here.
    template: '<ui-view/>'
})
.state('contacts.list', {
    // url will become '/contacts/list'
    url: '/list'
    //...more
})
.state('contacts.detail', {
    // url will become '/contacts/detail'
    url: '/detail',
    //...more
})
//注意:abstract仍然需要一个ui视图来填充其子项。
//您只需在此处内联添加它。
模板:“”
})
.state('contacts.list'{
//url将变成“/contacts/list”
url:“/list”
//……更多
})
.state('contacts.detail'{
//url将变成“/contacts/detail”
url:“/detail”,
//……更多
})

要点是:state name中的每个
(点)表示嵌套。即

// child of the 'app' state
.state('app.report_moveFrom', {
// child of the above 'app.report_moveFrom'
.state('app.report_moveFrom.drillDown', {
此外,任何视图目标都默认使用相对命名。这意味着,UI路由器在父状态下搜索(未命名)视图。因此,
'app.report\u moveFrom'
必须包含
app.report\u moveFrom
,如果我们使用以下语法:

// parent for next state
.state('app.report_moveFrom', {
...
// the default view name resolution is related to parent
.state('app.report_moveFrom.drillDown', {
  url: '/drillDown',
  views:{
     // that ui-view="main" target must be in the above state
    'main': {
    ...
最后,如果我们有一个子项,它也会继承父项url

// parent url
.state('app.report_moveFrom', {
  url: '/reports/moveFrom',
  ...
})
//child url - is later extended with parent part
.state('app.report_moveFrom.drillDown', {
  url: '/drillDown',
  ...
  // and in runtime this state has '/reports/moveFrom' +  '/drillDown'
  // i.e.: '/reports/moveFrom/drillDown'
但是我们可以通过一些技巧来改变这种默认行为

1) 重置url,从根开始,2)目标父级,使用绝对视图命名

.state('app.report_moveFrom.drillDown', {
  // this sign at the beginning will rest url evaluation - to root level
  url: '^/drillDown',
  views:{
    // we use absolute naming here, so this state will be placed into grand parent 'app'
    'main@app': {
      ...
但最好的办法是(在我看来)从州名中删除
,默认情况下创建一个兄弟姐妹(而不是孩子)


…现在所有这些都将按设计工作-因为我们没有创建太多嵌套的
状态

,我很确定在定义路由时,
ui路由器
不支持多个
。这是我的想法。谢谢你的回复!我认为这并不能解决OP的问题。此外,在使用
ui路由器
导航时,通常不使用URL路径。相反,您可以通过
ui sref
$state.go()
使用状态名称导航。当您共享URL时(例如,通过电子邮件),URL路径用于深度链接。
.state('app.report_moveFrom', {
// remove dot
//.state('app.report_moveFrom.drillDown', {
.state('app.report_moveFrom_drillDown', {