【问题标题】:How can I set a query parameter in AngularJS without doing a route?如何在不执行路由的情况下在 AngularJS 中设置查询参数?
【发布时间】:2013-07-04 23:39:42
【问题描述】:

我的 Angular 应用程序允许用户加载一个项目,当这种情况发生时,我想设置一个包含项目 ID 的查询字符串,这样如果用户刷新页面(或想要链接到它), URL 已设置(如果 Id 存在于 $routeParams 中,则已有代码加载项目)。

如何设置查询参数而不导致路由?如果发生路由,页面上还有其他内容将被重置(包括必须重新加载其所有数据的插件),因此仅更改查询参数很重要。

简而言之,当我加载项目 123 时,我想要发生的只是 URL 从以下位置更改:

www.myurl.com/#/Items

到:

www.myurl.com/#/Items?id=123

没有发生任何路由。

最好的方法是什么?

【问题讨论】:

    标签: url angularjs routing query-parameters


    【解决方案1】:

    在您的$routeProvider 配置中将reloadOnSearch 设置为false:

    $routeProvider
      .when('/items', {
        controller: 'ItemsCtrl',
        templateUrl: '/templates/items',
        reloadOnSearch: false
      },
      ...
    );
    

    并在您的控制器中使用$location.search() 设置id 参数:

    $location.search('id', 123);
    

    【讨论】:

    • 我在设置查询字符串时遇到了一些非常奇怪的行为。reloadOnSearch: false 是我的关键。
    猜你喜欢
    • 2018-01-06
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多