Получить предыдущее местоположение в UI-маршрутизаторе Angularjs

Я знаю, что мы можем использовать fromState и fromParams в $stateChangeSuccess, чтобы получить всю информацию о предыдущем местоположении. Как сказано здесь:

Angular - пользовательский интерфейс получает предыдущее состояние

$rootScope.$on('$stateChangeSuccess', function (ev, to, toParams, from, fromParams) {
   
});

Но есть ли хороший способ разобрать его на url/location? Например:

Состояние: /page/:id/paragraph/:line

Параметры: id и строка и т.д..

Что я хочу:

/страница/3/абзац/5 ...

Я имею в виду, что это может запутаться с кучей параметров. Кроме того, Angularjs ui-router также может иметь {{ id }} в качестве параметров вместо :id. Нет ли уже функции для этого или мне нужно использовать RegEx? И если да, то какую строку RegEx использовать?

Спасибо.


person HP.    schedule 18.01.2014    source источник


Ответы (3)


Используйте $state.href, чтобы получить URL:

$rootScope.$on('$stateChangeSuccess', function (ev, to, toParams, from, fromParams) {

   // $state.href(from, fromParams)

});

Вы также можете передать options в качестве третьего параметра.
Дополнительную информацию см. в Документах.

person Ilan Frumer    schedule 18.01.2014

Не сильно по-другому, но вы могли бы сделать:

$rootScope.$on('$routeChangeStart', function (event, next, current) {
});

И просто сохранить текущий. Функция там намного меньше, чем $routeChangesuccess.

person gonzofish    schedule 18.01.2014

использование window.history.back() вернет вас к предыдущему URL-адресу.

person Michael Tot Korsgaard    schedule 22.03.2016