gpt4 book ai didi

angular-ui-router - Angular UI Router - 允许任何查询字符串参数

转载 作者:行者123 更新时间:2023-12-04 12:58:07 26 4
gpt4 key购买 nike

我正在使用 Angular UI 路由器,这在大多数情况下都能很好地工作。但是,我有一种情况,我不知道提前查询字符串参数的名称。

所以通常使用 UI 路由器你会定义一个这样的路由:

$stateProvider.state('test', {
url: '/test?testQueryStringParam',
templateUrl: 'Test.html',
controller: 'TestController'
});


然后在我的 Controller 中,我可以使用 $stateParams 访问 testQueryStringParam。

但是,使用 UI 路由器,您无法访问任何未在路由定义中指定的查询字符串参数。

Angular 框架附带的路由器确实允许您执行此操作。所以我尝试在我的 UI 路由器定义中使用 $location 服务。这确实有点工作。

当我想添加查询字符串参数时,我使用:

$location.search("paramName", "paramValue");


当我想获取查询字符串值时,我只使用:

$location.search()


这会更新 URL,但不会重新实例化 Controller (如 $state.go($state.current, {}, {reload: true}) 会)。这似乎不是什么大问题,因为我可以自己重新加载数据。但是,如果您在浏览器中使用后退按钮,它会再次更改 URL,但不会重新实例化 Controller 。

有吗
  • 我可以只使用 UI 路由器来让它工作吗?
  • 获取使用 $location 实际重新实例化 Controller 的解决方法。?

  • 作为最后的手段,我还尝试指导更新 window.location,但这会刷新整个页面,这是 Not Acceptable 。

    谢谢

    最佳答案

    可以传递不在 URL 中出现的非 url 参数

    $stateProvider.state('test', {
    url: '/test?testQueryStringParam',
    params: {
    optParam: null,
    },
    templateUrl: 'Test.html',
    controller: 'TestController'
    });

    如您所见, optParam是一个可选参数,默认值为 null,在 URL 中不可见

    您可以使用 $stateParams 在 Controller 中访问此参数
    $stateParams.optParam

    这是一个有用的 blog

    关于angular-ui-router - Angular UI Router - 允许任何查询字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28449774/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com