如何使用Angular ui-router设置默认状态

时间:2013-12-09 22:18:28

标签: angularjs angular-ui

我正在使用状态来更改表格中的数据。 网址格式为/zone/:zoneCode 但是,当只访问/zone时,我希望它默认为某个zoneCode

这是我的代码:

.state('zone',
{
    url:'/zone',
    controller:'ZoneController',
    templateUrl:'views/zone.html'
})
.state('zone.code',
{
    url:'/:zoneCode',
    templateUrl:function(stateParams)
    {
        return 'views/zone-codes/'+stateParams.zoneCode+'.html';
    }
}

为每个子视图加载的模板包含一个显示数据的表 如果网址中没有zoneCode,则表格不存在,因为ui-view无法加载templateUrl

如何设置父状态的默认值?

感谢。

2 个答案:

答案 0 :(得分:55)

虽然问题已经很久了,但我还是想提供一个答案,因为我遇到了同样的问题。答案可以找到in this Stackoverflow question。要将答案应用于您的案例:

$urlRouterProvider.when('/zone','/zone/'+zoneCode);

urlRouterProvider检查url是否为[yoururl] / zone。如果是这种情况,它将重定向到[yoururl] / zone / zoneCode,并将zoneCode作为您指定的区域。

希望它有所帮助!

答案 1 :(得分:13)

您也可以通过重定向到您设置的默认路线来处理不存在的路线。

$urlRouterProvider.otherwise('/');

$stateProvider.state("zone", {
    url: "/",
    templateUrl: "views/zone.html",
});