基本上,这是我正在开发的一种社交应用程序。
因此,要使这个应用程序正常运行,' / home' state显示用户列表。 '朋友/ X' (X是用户ID)显示该用户的个人资料。
所以,这是我的应用程序在元素中使用ng控制器:
ng-click="profile({{friend.id}})"
这会挂钩并向我的控制器发送一个函数调用" HomeController"目前在" / home"。我的问题是,如何打开一个新状态并传递一个变量,在这种情况下,将friend.id传递给状态?
谢谢:)
编辑: 基本上我想知道一个函数" profile"可以捕获id,然后调用新状态并向其发送friend.id
的变量id编辑2: 基本上,在" HomeController"中的配置文件功能中。它将接受一个ID作为参数,例如" 1",它将使用它收到的值并将应用程序发送到NEW状态,例如现在新的状态将是&#34 ; ProfileController可"它将是" / home / profile"或类似的东西,它将通过" 1"进入网址,如下:" / home / profile / 1"。
答案 0 :(得分:2)
如果要在函数内执行此操作,则应使用$location
service更改URL。然后路线将更新,配置文件控制器可以接管。
<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>
如果您坚持使用此方法并将其留在路由机制中以选择正确的控制器,那么您的用户将能够直接复制/添加书签/跳转到该URL,并使用浏览器中的后退/前进按钮。
使用$routeProvider
service告诉AngularJS根据URL使用哪个控制器。例如(这应该放在您的模块中.config
):
$routeProvider
.when('/home/profile/:friendId', {
templateUrl: 'profile.html',
controller: 'ProfileController'
})
...etc
然后,您可以使用ProfileController
中的$routeParams
获取当前的friendId
参数。