AngularJS UI-Router: получить абсолютный URL состояния с параметрами
Я хотел бы изменить URL-адрес адреса без изменения состояния, чтобы предотвратить повторную передачу. Из моего поиска ui-router
в настоящее время не предоставляет этого, но $location.path
от anuglar делает.
Поэтому, естественно, я хотел использовать $state.get(stateName)
для перехода к URL состояния, так что я не вручную набираю URL.
У меня две проблемы:
-
$state.get(stateName)
возвращает только относительный путь. Как я могу получить абсолютный путь?
- Он также возвращает определение состояния с параметрами undefined. Как я могу получить URL с параметром на месте?
Например, если у меня есть состояние с именем user.home.view
с user.home
, у меня есть мои состояния, определенные как
'user': {
abstract: true,
url: '^/users/'
},
'user.home': {
url: ''
},
'user.home.view': {
url: ':id/'
}
Так что прямо сейчас $state.get(user.home.view).url
возвращает :id/
. Как я могу получить полный URL (т.е. /users/5/
)?
Ответы
Ответ 1
Вы должны использовать $state.href()
.
-
Чтобы получить абсолютный URL-адрес, вы можете использовать:
$state.href('user.home.view', {}, {absolute: true});
-
Чтобы получить URL с параметрами на месте, вам нужно добавить их в качестве второго аргумента
Ответ 2
Как насчет:
$state.href($state.current.name, $state.params, {absolute: true})
Ответ 3
Чтобы получить абсолютный URL без параметров, мне нужно пройти inherit: false
, например:
$state.href('home', {}, {absolute: true, inherit: false})
Без inherit: false
Я получал все/все параметры, которые могут присутствовать.