2016-04-22 130 views
0

我目前正在使用angularjs進行模型綁定的asp.net mvc網站上工作。我有一個控制器設置,但我需要從網址中獲取ID以將其傳遞給服務。我的URL看起來像:angularjs從url獲得參數

http://localhost/myapp/section/5 

我需要搶5出的url,我們沒有使用的角度進行路由選擇,反正是有搶通角?否則,我可以使用.net將其注入到全局js變量中,並使用angular來從那裏讀取id。

設置我的角度控制器如下:

myModule.controller('SectionController', ['$scope', 'sectionRepository', '$routeParams', SectionController]); 

function SectionController($scope, sectionRepository, $routeParams) { 
    var vm = this; 

    alert($routeParams.id); 

警報返回「未定義」,我假設,因爲我從來沒有設置在角路線,有沒有辦法做到這一點,但未安裝路由,因爲我們不想使用角度進行路由。

+0

也許使用$ location.absUrl()和解析字符串 –

回答

3

您可以使用$location服務來獲取URL。從那裏,只是解析它。

function SectionController($location) { 
    var url = $location.url(); 
    //regex is slow, you should use substring/slice instead 
    //var regex = /(?:section\/)[0-9]+/; 

    var id = url.substring(url.indexOf("section/") + "section/".length); 
    alert(id); 
} 
+0

你確定$ location.url()會工作,如果角沒有路由的應用程序? –

+0

@SergioMarron根據文檔(https://docs.angularjs.org/api/ng/service/$location),它不依賴於路由。 'window.location'中的變化是實時的,'$ location'可以看到它們。 – Kyle

+0

我試過$ location.path()並返回一個空字符串。 window.location.pathname工作。 –