2013-08-07 23 views
17

Url içinde url kısmını alınolabilir angularjs

person/show/31586 

veya

person/show/31586#tab1 

o açısal şekilde kimliğini almak mümkün mü? Yönlendirme, açısal tarafından yönetilmez. Yukarıdaki URL bir sayfa yükler ve sayfadaki bazı içerikler açısal olarak yönetilir.

cevap

33

$location hizmeti, URL'yi tarayıcı adres çubuğundan ayrıştırır ve URL'yi uygulamanız için kullanılabilir hale getirir. Normal URL yolu ve arama segmentleri kullandığınızdan, html5Mode değerini $locationProvider ile true olarak ayarlamanız gerekir.

Varsayılan olarak, $locationProvider sağlama kuleleri kullanır, bu nedenle html5Mode değerini true olarak ayarlamazsanız, URL yolunu almaya çalıştığınızda boş bir dize alırsınız.

html5mode'u ayarladıktan sonra, URL yolunu almak için $location hizmetini kullanabilir ve yolu işlemek için kendi kuralınızı yazabilirsiniz. http://example.com/person/show/321

Sonra main.js içinde aklınıza gelebilecek:

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

Ve index.html içinde aşağıdakiler bulunabilir:

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

Umut Bu örnek için

, sevdiği tam URL görünüyor varsayalım sizin için yararlıdır. Eğer karakter dizisinin son parça almak isterseniz

+0

, $ konum bağımlılık enjeksiyon kullanmanın tek avantajı nedir? (NG bazı kullanışlı API sağlamalıdır ...) – ryanwebjackson

13

, buradan Açısal içinde url alma ile ilgili yardım isteyen vaka başkasının topraklarında bu

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

gibi bir şey yapabilir. Bazen, bir absUrl erişmek gerekebilir: Bu senaryoda

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