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

How to pass query string parameters through URL

我正在使用这个:

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

我想这样做:

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

但这不起作用。

我试过:

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

他们两个实际上都更改了 url 但没有更新 angularjs 应用程序 - 因为它没有连接到实际的路由器。

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

/path/to/param/myParam 

但在这种情况下我需要 query string 参数。

Url 像这样配置使用

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

你在控制器中使用 $stateParams 获得价值

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

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

我不知道为什么,但是 angularjs ui 路由器与 Angular 团队制作的常规 ngroute 相比非常乏味。我使用 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);
}