附加变量的Angularjs路由

时间:2015-04-15 23:11:30

标签: angularjs node.js

基本上,这是我正在开发的一种社交应用程序。

因此,要使这个应用程序正常运行,' / home' state显示用户列表。 '朋友/ X' (X是用户ID)显示该用户的个人资料。

所以,这是我的应用程序在元素中使用ng控制器:

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

这会挂钩并向我的控制器发送一个函数调用" HomeController"目前在" / home"。我的问题是,如何打开一个新状态并传递一个变量,在这种情况下,将friend.id传递给状态?

谢谢:)

编辑: 基本上我想知道一个函数" profile"可以捕获id,然后调用新状态并向其发送friend.id

的变量id

编辑2: 基本上,在" HomeController"中的配置文件功能中。它将接受一个I​​D作为参数,例如" 1",它将使用它收到的值并将应用程序发送到NEW状态,例如现在新的状态将是&#34 ; ProfileController可"它将是" / home / profile"或类似的东西,它将通过" 1"进入网址,如下:" / home / profile / 1"。

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参数。