AngularJS UI-Router: получить абсолютный URL состояния с параметрами
Я хотел иметь возможность изменить URL-адрес адреса без изменения состояния, чтобы предотвратить повторный перевод. Из моих поисков, ui-router в настоящее время не предоставляет, но $location.path из ануглара делает.
поэтому, естественно, я хотел использовать $state.get(stateName) чтобы добраться до URL-адреса государства, так что я не вручную введите URL-адрес.
у меня есть две проблемы:
$state.get(stateName)возвращает только относительный путь. Как я могу получить абсолютный путь?- это также возвращает определение состояния с неопределенными параметрами. Как я могу получить 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/)?
3 ответов:
вы должны использовать
$state.href().
чтобы получить абсолютный URL-адрес, вы можете использовать:
$state.href('user.home.view', {}, {absolute: true});чтобы получить URL с параметрами на месте вам нужно добавить их в качестве второго аргумента
для получения абсолютного URL без параметров, я нахожу, что мне нужно передать
inherit: false, например:$state.href('home', {}, {absolute: true, inherit: false})без
inherit: falseЯ получаю все параметры, которые могут присутствовать.
Comments