如何通过URL传递查询字符串参数

时间:2019-07-23 08:17:00

标签: angularjs angular-ui-router

我正在使用这个:

$state.go("/path/to");

我想这样做:

$state.go("/path/to?param=myParam");

但这不起作用。

我尝试过:

$location.path("/path/to?param=myParam");
$location.path("/path/to").search({param: "myParam"});

它们实际上都更改了网址,但未更新angularjs应用程序-因为该应用程序未连接到实际的路由器。

如何使用AngularJS ui路由器传递查询字符串参数? 注意,我知道我可以像这样传递完整的URL路径:

/path/to/param/myParam 

但是在这种情况下,我需要将其设为query string参数。

3 个答案:

答案 0 :(得分:1)

根据documentation $ state.go,您可以使用另一个参数来传递查询字符串。

$state.go("/path/to",{param:myParam});

答案 1 :(得分:0)

这样的网址配置使用

  .state('path/:param', { 
                url: '/path/:param',
                templateUrl: 'views/path.html',
      }) 

您将获得使用$ stateParams的值

答案 2 :(得分:0)

我不知道为什么,但是与Angular团队制作的常规ngroute相比,angularjs ui路由器非常繁琐。我之所以使用ui路由器,是因为它支持视图的延迟加载。

无论如何,这是我找到的解决方案-同时使用$state.go$location.path

$location.path(`/path/to`).search({param: "myParam}});
$state.go(`/path/to`);

可以包装起来以方便使用:

module.exports = (path, qsObj) => {
    if (qsObj) {
      $location.path(path).search(qsObj);
    }
    $state.go(path);
}