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

AngularJs $location.path с полным URL-адресом

Я хочу направить пользователя на URL-адрес, если он щелкнет ok в модальном режиме. В моем контроллере я получаю URL-адреса, например

var newUrl = http://localhost:3000/#/dashboard

var newUrl = http://localhost:3000/#/users

как переменная.

Если i, то используйте

$location.path(newUrl);

он не работает. Я также пробовал

$location.url(newUrl);

но мой URL-адрес закодирован таким образом.

http://localhost:3000/#/#%2Fdashboard

Есть ли способ получить только путь к URL?

Изменить

этот код является частью службы. Пользователь делает некоторые входы в форме и нажимает на другую ссылку, например, в меню. Затем появляется всплывающее окно, где ему предлагается пропустить изменения формы. Если он нажимает "да", я получаю запрошенный url. Это из моей среды разработки на сервере, конечно, это будет другой URL-адрес. Поэтому я не могу просто использовать

$location.path("/users")

например

4b9b3361

Ответ 1

Я столкнулся с этой проблемой при наличии событий Angular preventDefault $locationChangeStart, принудительного сохранения и перенаправления при успешном завершении. Я определяю следующую функцию в теле контроллера:

var baseLen = $location.absUrl().length - $location.url().length;
function getPath(fullUrl) { 
    return fullUrl.substring(baseLen);
}

Это не похоже на чистое решение, но, как работа, он выполняет эту работу. RegEx может работать лучше для вас, если вы не знаете, что ваши URL-адреса указывают на один и тот же сайт.

Ответ 2

Вы можете использовать $location.absUrl().

См. официальную документацию: введите ссылку здесь

Этот метод является только получателем.

Возвращает полное представление url со всеми сегментами, закодированными в соответствии с правилами, указанными в RFC 3986.

Ответ 3

Могу ли я предложить другое решение:

    $scope.$on('$locationChangeStart', function(e) {
      if (meetsTheRequirementsToLeave()) {
        return;
      }
      var newPath = $location.path();
      e.preventDefault();
      checkIfUserWantsToLeave().then(function() {
        $location.path(newPath);
      });
    });

Внутри этого события $location.path() возвращает новый путь.