2015-01-11 83 views
0

我正在嘗試使用角度routeProvider和routeParams來獲取id和name參數。 這裏的JS:Angular routeParams返回一個空對象

angular.module("test",["ngRoute"]) 
.config(["$routeProvider",function(a){ 
    a.when("/test/:id",{}). 
     when("/tests/:name",{}); 
    } 
]).controller("testCtrl",["$scope","$routeParams",function(a,b){ 
    a.result = b.name; //console.log(b.id); 
} 
]); 

和HTML

<html ng-app="test"> 
... 
<body ng-controller="testCtrl"> 
<p>Test ID</p> 
<a href="/test/1">1</a> 
<a href="/test/2">2</a> 


<p>Test Name</p> 
<a href="/tests/test1">Test1</a> 
<a href="/tests/test1">Test2</a> 
<a href="/tests/test1">Test3</a> 


<p>RouteParams Result</p> 
<p>{{ result }}</p> 
</body> 

這不是一個SPA,所以我不能當功能設置templateUrl和控制器。我只需要URL參數。我已經包括角與角路由庫

Here's the plunkr just in case

+0

是否將控制器添加到對象中以解決問題?即。當(「/測試/:ID」,{控制器:'testCtrl'}) – codephobia

+0

不,像以前一樣返回undefined – wdphd

回答

1
a.when("/test/:id",{}). 
    when("/tests/:name",{ 
    controller: "testCtrl" 
    }); 
} 

你需要爲了得到routeParams指定控制器當前的狀態。

+0

正如我上面提到的,我明確地把它留在當我的控制器改變爲每個視圖(Say id = 1 ,id = 2) – wdphd

+0

然後,您需要使用$ routeChangeStart函數來獲取當前狀態的參數 – yeswanth

+0

我已修改鏈接。該應用程序不是使用普通routeProvider和routeParams的SPA。我只需要訪問url中的參數。我試過$ scope。$ on(「routeChangeError」),routeChangeSuccess。但事件並未被解僱。 – wdphd