带有variables的Angularjs路由

基本上,这是我正在研究的一种社交types的应用程序。

所以,为了使这个应用程序正常工作,“/ home”状态显示了一个用户列表。 'friends / X'(X是用户ID)显示该用户的个人资料。

所以,这里是我的应用程序与元素ng控制器:

ng-click="profile({{friend.id}})"

这挂钩并发送一个函数调用我目前在“/ home”中的控制器“HomeController”。 我的问题是,我怎么打开一个新的状态,并通过一个variables,在这种情况下的friend.id到状态?

谢谢 :)

编辑:基本上我想知道如何一个函数“configuration文件”可以捕获的身份证,然后调用新的状态,并发送它的variablesid friend.id

编辑2:基本上,在“HomeController”中的configuration文件function,它将接受一个I​​D作为参数,例如“1”,它将使用它收到的值,并将应用程序发送到一个新的状态,例如现在新的状态将是“ProfileController”,它将是“/ home / profile”或类似的东西,它会沿着“1”传递到URL,如下所示:“/ home / profile / 1” 。

如果你想在一个函数中做这个,你应该使用$location服务来改变URL。 然后,路线将更新,并且configuration文件控制器可以接pipe。

 <a ng-click="profile(friend.id)">{{friend.name}}</a> 

…在控制器中:

 $scope.profile = function(id) { $location.url('/home/profile/' + id); }; 

但是,除非您更改路由之前需要点击某些内容,否则可以使用href来完成:

 <a ng-href="#/home/profile/{{friend.id}}">{{friend.name}}</a> 

如果你坚持使用这种方法,并把它留给路由机制来select正确的控制器,那么你的用户将能够直接复制/书签/跳转到该URL,并使用浏览器中的后退/前进button。

使用$routeProvider服务根据URL告诉AngularJS使用哪个控制器。 例如(这应该在您的模块的.config ):

 $routeProvider .when('/home/profile/:friendId', { templateUrl: 'profile.html', controller: 'ProfileController' }) ...etc 

然后你可以在$routeParams中使用$routeParams来获取当前的friendId参数。