我正在使用这个:
$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
参数。
答案 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);
}