AngularJS: Можно ли игнорировать URL-адрес состояния родителя при использовании UI-Router?
Я разрабатываю приложение AngularJs с использованием UI-Router(-extras), в котором я использую следующую настройку:
.state('root', {
url: '/{language:(?:nl|en)}',
views: {
'root': {
templateUrl: 'app/root/root.html',
controller: 'RootController'
}
}
})
.state('root.main', {
views: {
'main': {
templateUrl: 'app/main/main.html',
controller: 'MainController'
}
},
sticky: true
})
.state('root.modal', {
url: '/{locale:(?:nl|fr)}',
views: {
'modal': {
templateUrl: 'app/modal/modal.html',
controller: 'ModalController'
}
}
})
Корневое состояние определяет язык в URL. Кроме того, у меня есть несколько модальных и основных состояний, которые имеют свои собственные URL (т.е. root.main.home
=> /en/home
).
Теперь я хочу иметь модальные состояния, которые не имеют URL. Как я могу заставить государство игнорировать URL его родителя?
1 ответ
Отвечать:
как государство может игнорировать URL своего родителя?
у нас есть
Абсолютные маршруты (^)
Если вы хотите иметь абсолютное соответствие URL-адресов, вам необходимо добавить префикс вашей строки URL-адреса со специальным символом "^".
$stateProvider
.state('contacts', {
url: '/contacts',
...
})
.state('contacts.list', {
url: '^/list',
...
});
Таким образом, маршруты станут:
- состояние контактов
"/contacts"
- совпадения состояния "contacts.list"
"/list"
, URL не были объединены, потому что был использован ^.
Также проверьте это: как реализовать пользовательские маршруты в angular.js?