由亞倫說,你可以使用$狀態導航到一個默認的子狀態,但這裏有一個陷阱說假設你有超過1名兒童:
.state('places',
{
url:'/places',
controller:'PlacesController',
templateUrl:'views/places.html'
})
.state('places.city',
{
url:'/:city',
templateUrl:function(stateParams)
{
return 'views/places/'+stateParams.city+'.html';
}
})
.state('places.child2',
{
url:'/:city2',
templateUrl:function(stateParams)
{
return 'views/places/'+stateParams.child2+'.html';
}
});
和你父控制器PlacesController你有$ state.go(places.city)然後,只要父控制器即PlacesController被調用,你將被重定向到城市狀態。 所以如果有人在child2狀態並按下刷新按鈕,父控制器將被調用,他將被重定向到城市,這不是你想要的!
ANS:所以,你可以這樣做,即如果該人是在父母的狀態重定向之前檢查當前的狀態然後重定向到任何默認的子狀態,但如果此人在任何孩子的狀態,那麼請不要做父控制器中的重定向: -
if($state.current.name == "places"){
$state.go('places.city');
}
希望這有助於!父狀態
.state('places',
{
url:'/places',
resolve: { default: function($state) {
if ($state.is('places')) $state.go('places.city', { url: 'london'})
}}
controller:'PlacesController',
templateUrl:'views/places.html'
})
.state('places.city',
{
url:'/:city',
templateUrl:function(stateParams)
{
return 'views/places/'+stateParams.city+'.html';
}
});
檢查語法錯誤
,你可以設置一個的jsfiddle? –
對不起,沒有語法高亮設置。應該是乾淨的現在閱讀。 – Francisc
[angularjs ui-router default child state]可能重複(http://stackoverflow.com/questions/17001589/angularjs-ui-router-default-child-state) –