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

Получить часть URL в angularjs

Url может быть

person/show/31586

или

person/show/31586#tab1

Можно ли получить идентификатор в angular? Маршрутизация не управляется angular. Вышеупомянутый URL-адрес загружает страницу, и только некоторый контент на странице управляется angular.

4b9b3361

Ответ 1

Служба $location анализирует URL-адрес из адресной строки браузера и делает URL доступным для вашего приложения. Поскольку вы используете обычные URL-адреса и поисковые сегменты, вам нужно установить html5Mode в true с помощью $locationProvider.

По умолчанию $locationProvider использует hashbangs, поэтому, если вы не установите для параметра html5Mode значение true, вы получите пустую строку при попытке получить URL-адрес.

После того, как вы установите html5Mode, вы можете использовать службу $location для извлечения пути URL-адреса и написать свое собственное правило для обработки пути.

Например, предположим, что ваш полный URL-адрес выглядит следующим образом: http://example.com/person/show/321

Тогда в main.js у вас может быть:

angular.module("MyAPP",[],function($locationProvider){
    $locationProvider.html5Mode(true);
});

function MainController($location){
    var pId = $location.path().split("/")[3]||"Unknown";    //path will be /person/show/321/, and array looks like: ["","person","show","321",""]
    console.log(pId);
}

И в index.html у вас может быть:

<!DOCTYPE html>
<html lang="en" ng-app="MyAPP">
    <head>
        <meta charset="utf-8">
        <title>Angular test</title>
    </head>
    <body ng-controller="MainController">
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
        <script src="js/main.js"></script>
    </body>
</html>

Надеюсь, это поможет вам.

Ответ 2

Если вы хотите получить последний фрагмент строки, вы можете сделать что-то вроде этого

function MainController($location){
   var pId = $location.path().split(/[\s/]+/).pop();
     console.log(pId);         //321
}

Ответ 3

В случае, если кто-то еще приземляется здесь, ища помощь, связанную с поиском URL-адреса в Angular. Иногда может потребоваться доступ к absUrl:

console.log($location.absUrl());
http://127.0.0.1:3000/home