我觉得这有点傻了,我已经看了很长时间并且搜索了这个,并且知道设置默认子状态的两种主要方法是:
url: '',
or
$urlRouterProvider.when('/route', '/newroute');
我尝试使用空url配置,因为当父状态设置为abstract:true时,重新路由选项会导致不必要的问题。所有模板都包含一个ui-view元素。 我的代码目前看起来与此类似:
.state('data', {
url: "/data",
templateUrl: "views/data.php",
})
.state('data.overview', {
url: "",
templateUrl: "views/subviews/data.overview.php",
})
.state('data.overview.view', {
url: "",
templateUrl: "views/subviews/subviews/data.overview.view.php"
})
.state('data.overview.view.msgfav', {
url: "",
views: {
msg: {
templateUrl: "views/subviews/subviews/data.overview.view.msg.php"
},
fav: {
templateUrl: "views/subviews/subviews/data.overview.view.fav.php"
}
}
})
以及一些更多的儿童状态(由于并不意味着默认,因此似乎并不相关)。我尝试使用父状态作为抽象:true并且没有设置它,url为空且没有url设置,只有最接近的子状态而不是所有嵌套状态。坚持使用ng-include可以作为默认状态,但感觉不洁。直接对每个孩子进行操作可以正常工作。我真的不确定我在这里失踪了什么,但我确定它的一些小细节会让我看起来很傻。
答案 0 :(得分:0)
我不确定我是否应该回答我自己的问题,但认为这是合适的。
我认为你不能直接在ui-sref中定位父状态(抽象)并期望它默认为子状态并填充视图,而是在链接中定位子状态。然后必须在链中设置每个父状态以抽象到您想要自动填充的点。我没有发现这一点完全清楚,这篇文章的答案中有一部分让我对此有所了解;
“首先,将属性添加到'manager.staffDetail.view'的抽象状态:true。这不是必需的,但是你要设置它,因为你永远不会去直接这个州,你总是会去其中一个孩子的州。“