在ui-router状态控制器中检索查询参数

时间:2014-05-20 05:42:32

标签: javascript angularjs angular-ui-router

所以例如我可能有一个描述的阶段:

.state('room', {
    url: "/room/:id",
    templateUrl: "app/views/room.html",
    controller: 'roomsCtrl'

})

然后定义一个控制器:

angular.module('app')
    .controller('roomsCtrl', ['$scope','Room', function ($scope,Room) {
        $scope.rooms = Room.get({id: 1}, function(item) {

        });
        console.log($scope);



    }]);

在这个例子中,Room是一个连接到restful api的服务对象。我想测试控制器中是否存在id,并将其传递给id参数" Room.get({id:1}"如果存在,否则不传递任何内容。

如何检索url中存在的参数id?

在我的情况下,它显示为:/#/ room / 1

以下是我视图中某些html的示例,其中的链接将键入id:

<a ui-sref="room({ id: '1' })">
    {{room.name}}
</a>

1 个答案:

答案 0 :(得分:2)

如果您使用的是$stateProvider

,可以使用 $stateParams

$stateParams是一个角度服务,允许您检索当前的状态参数集。

angular.module('app')
    .controller('roomsCtrl', ['$scope','Room','$stateParams' function ($scope,Room, $stateParams) {

       var id = $stateParams.id;
       :
    }]);

如果您使用 $routeProvider ,请使用 $routeParams

同时尝试

var id = $routeParams.id;