Ответ 1
ui-router
имеет решение (почти) для чего угодно. Существует рабочий плункер. Функция, которую мы будем использовать, называется: Абсолютные маршруты (^)
Итак, начнем с требования, чтобы иметь эти URL-маршруты:
domain/#/ -- root for main
domain/#/emergency/ -- main.emergency
domain/#/emergency/detail -- main.emergency.detail
Что должно работать при использовании этого состояния ui-sref
:
<ul>
<li><a ui-sref="main">Main</a></li>
<li><a ui-sref="main.emergency">Emergency</a></li>
<li><a ui-sref="main.emergency.detail">Detail</a></li>
</ul>
Теперь трюк:
- В корневом (первом) состоянии должно использоваться
url: "/"
, чтобы иметь уникальную идентификацию - но следующее состояние может снова начать свое определение с корня: с помощью этого параметра:
url: "^/..."
Вот конфигурация состояния, позволяющая получить желаемые результаты
$stateProvider
// root with '/'
.state("main", {
url: "/",
templateUrl: 'main.tpl.html',
})
// here we start again from the root '/emergency'
.state("main.emergency", {
url: "^/emergency",
templateUrl: 'emergency_menu.tpl.html',
})
// parent and child '/emergency/detail
.state("main.emergency.detail", {
url: "/detail",
templateUrl: 'emergency_detail.tpl.html',
});
И вот документация:
Абсолютные маршруты (^)
... и рабочий plunker...