将查询字符串添加到UI路由器路由

时间:2015-06-18 21:20:46

标签: angularjs angular-ui-router

我有一个ui路由器路由,定义如下

        $stateProvider
        .state('search', {
            url: '/search',
            abstract: true,
            parent: 'loggedIn',
            views: {

                wrapper: {
                    controller: 'MyCtrl',
                    controllerAs: 'myCtrl',
                    templateUrl: '/scripts/views/search/views/search.wrapper.html'
                }
            }
        })
        .state('search.subs', {
            url: '',
            resolve: {
                isLoggedIn: isLoggedIn
            },
            views: {
                body: {
                    controller: 'SearchBodyCtrl',
                    controllerAs: 'searchBodyCtrl',
                    templateUrl: '/scripts/views/search/views/search.body.html'
                }
            }
        });

无论如何,问题是我无法生成查询参数,因此网址看起来像/search?hello=world我尝试使用$state.transitionTo('search.subs', {hello: 'world'}),但这并不起作用。我想我传递的任何不匹配的参数只会放在查询字符串中,但事实并非如此。

1 个答案:

答案 0 :(得分:2)

这应该做你想做的事:

    .state('search.subs', {
        url: '?hello', // This appends to the parent url
          ....

之后您可以使用$state.go('search.subs', { hello : 'world' })转换到search.subs状态。

https://github.com/angular-ui/ui-router/wiki/URL-Routing#query-parameters