2013-08-07 19 views
17

URL może byćGet część adresu URL w angularjs

person/show/31586 

lub

person/show/31586#tab1 

Czy to możliwe, aby uzyskać identyfikator w kątowego sposób? Routing nie jest zarządzany przez kąt. Powyższy adres URL ładuje stronę i tylko niektóre treści na stronie są zarządzane według kątów.

Odpowiedz

33

Usługa $location analizuje adres URL z paska adresu przeglądarki i udostępnia adres URL aplikacji. Ponieważ używasz zwykłej ścieżki URL i segmentów wyszukiwania, musisz ustawić html5Mode na true z $locationProvider.

Domyślnie $locationProvider używa hashbangs, więc jeśli nie ustawisz html5Mode na true, otrzymasz pusty ciąg przy próbie pobrania ścieżki URL.

Po ustawieniu html5mode można użyć usługi $location, aby pobrać ścieżkę URL i napisać własną regułę, aby przetworzyć ścieżkę.

Na przykład załóżmy, że pełny adres URL wygląda następująco: http://example.com/person/show/321

Następnie w main.js mogłeś:

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); 
} 

aw index.html może mieć:

<!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> 

nadzieję, że ten jest pomocny dla ciebie.

+0

W tym scenariuszu jest jedyną zaletą korzystania $ lokalizacji iniekcji zależność? (Wygląda na to, że NG powinno zapewnić wygodne API ...) – ryanwebjackson

13

Jeśli chcesz dostać ostatni kawałek łańcucha, można zrobić coś takiego

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

w przypadku cudzych ziem tutaj szukających pomocy związanej z pobierania adresu URL w kątowe. Od czasu do czasu, można mieć dostęp do absUrl:

console.log($location.absUrl()); 
http://127.0.0.1:3000/home 
Powiązane problemy