Подтвердить что ты не робот

Как установить состояние по умолчанию с помощью Angular ui-router

Я использую состояния для изменения данных в таблице. URL-адреса имеют форму /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';
    }
}

Шаблон, загруженный для каждого подвью, содержит таблицу, отображающую данные.
Если в URL-адресе нет zoneCode, таблица не существует, потому что ui-view не знал, чтобы загрузить templateUrl.

Как установить значение по умолчанию для родительского состояния?

Спасибо.

4b9b3361

Ответ 1

Хотя вопрос довольно старый, я все равно хотел бы дать ответ, поскольку у меня была такая же проблема. Ответ можно найти fooobar.com/questions/78577/.... Чтобы применить этот ответ к вашему делу:

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

URL-адрес urlRouterProvider проверяет, является ли URL-адрес [yoururl]/zone. Если это так, оно будет перенаправлено на [yoururl]/zone/zoneCode, с кодом зоны, который вы указали.

Надеюсь, это поможет кому-то!

Ответ 2

Вы также можете это сделать, он будет обрабатывать маршруты, которых не существует, перенаправляя маршрут по умолчанию, установленный вами.

$urlRouterProvider.otherwise('/');

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