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

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/)?

4b9b3361

Ответ 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 Я получал все/все параметры, которые могут присутствовать.