2013-08-07 42 views
17

網址URL中的一部分可能是獲取angularjs

person/show/31586 

person/show/31586#tab1 

是否有可能獲得角的方式ID?路由不是由角度管理的。上面的url加載一個頁面,只是頁面上的一些內容由角度來管理。

回答

33

$location服務從瀏覽器地址欄解析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> 

希望這對你有幫助。

+0

在這種情況下,要使用$位置依賴注入的唯一優勢在哪裏? (好像NG應該提供一些方便的API ...) – ryanwebjackson

13

如果您想獲得最後一塊串的,你可以做這樣的事情

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

以防其他人的土地在這裏尋求檢索相關的角網址幫助。有時,人們可能需要訪問absUrl

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