AngularJS UI-Router: получить абсолютный URL состояния с параметрами



Я хотел иметь возможность изменить URL-адрес адреса без изменения состояния, чтобы предотвратить повторный перевод. Из моих поисков, ui-router в настоящее время не предоставляет, но $location.path из ануглара делает.



поэтому, естественно, я хотел использовать $state.get(stateName) чтобы добраться до URL-адреса государства, так что я не вручную введите URL-адрес.



у меня есть две проблемы:





  1. $state.get(stateName) возвращает только относительный путь. Как я могу получить абсолютный путь?

  2. это также возвращает определение состояния с неопределенными параметрами. Как я могу получить 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/)?

542   3  

3 ответов:

вы должны использовать $state.href().

  1. чтобы получить абсолютный URL-адрес, вы можете использовать:

    $state.href('user.home.view', {}, {absolute: true});

  2. чтобы получить URL с параметрами на месте вам нужно добавить их в качестве второго аргумента

о :

$state.href($state.current.name, $state.params, {absolute: true})

для получения абсолютного URL без параметров, я нахожу, что мне нужно передать inherit: false, например:

$state.href('home', {}, {absolute: true, inherit: false})

без inherit: false Я получаю все параметры, которые могут присутствовать.

Comments

    Ничего не найдено.