2014-09-06 31 views
-1

我有一個由Ruby on Rails服務器支持的單頁AngularJS應用程序。路由定義僅僅在RESTful的滑軌route.rb配置定義,如:如何獲取簡單的單頁面應用程序的路由參數?

http://localhost/pages/:page_id/comments/:comment_id 

客戶端是沒有routeProvider配置AngularJS。所以它只是一個帶有視圖的簡單的AngularJS控制器。

當我在http://localhost/pages/:page_id/comments/:comment_id.html,我想要提取的值爲:page_id:comment_id。在AngularJS中最好的方法是什麼?

注:我不介意是否真的需要使用routeProvider。但在這種情況下,我只有一個templateUrl

+0

'$ routeParams'可能是最好的。但如果你不想使用'routeProvider',你可以使用'$ location'來自己解析。 – Freedom 2014-09-06 05:34:05

回答

2

$routeParams服務允許您檢索當前的一組路徑參數。

需要安裝ngRoute模塊。

路線參數是$locationsearch()path()的組合。當$route路徑匹配時,會提取path參數。

請注意,$routeParams僅在路由更改成功完成後纔會更新。這意味着您不能依賴$routeParams在路由解析功能中正確。相反,您可以使用$route.current.params訪問新路由的參數。

例子:

// Given: 
// URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby 
// Route: /Chapter/:chapterId/Section/:sectionId 
// 
// Then 
$routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'} 

more infor

編輯:

如果使用的是angular-ui-router,你可以注入$stateParams

退房這個https://github.com/angular-ui/ui-router/wiki/URL-Routing


雖然路由的確是應用程序級的URL解析一個很好的解決方案,您可能希望使用更低水平$location服務,在自己的服務或控制器注入:

var paramValue = $location.search().myParam; 

這個簡單的語法將適用於http://example.com/path?myParam=someValue

$locationProvider.html5Mode(true); 

否則有看http://example.com/#!/path?myParam=someValue「Hashbang」語法是有點複雜,但對舊的瀏覽器工作的好處(非:但是,只有當你在HTML5模式之前配置的$locationProvider -html5兼容)。 [via:Javarome]

+0

我之前也遇到過這個網站。但事情是,我的頁面只有一個頁面,根本沒有ng-view或templateUrl – 2014-09-06 06:04:41

+0

如果你有ui-router,那麼你可以注入'$ stateParams' – 2014-09-06 06:10:21

+0

我可以沒有聲明ng-view嗎? – 2014-09-06 06:13:03

相關問題