如何在不执行路由的情况下在AngularJS中设置查询参数?

Mik*_*ras 72 url routing query-parameters angularjs

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

如何在不引起路由的情况下设置该查询参数?如果路由发生,页面上还有其他东西会被重置(包括必须重新加载所有数据的插件),因此只需查询参数更改就很重要.

简而言之,当我加载项目123时,我想要发生的是URL更改为:

www.myurl.com/#/Items

至:

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

没有任何路由发生.

最好的方法是什么?

Ste*_*wie 165

$ routeProvider配置中设置reloadOnSearch为false:

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

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

$location.search('id', 123);
Run Code Online (Sandbox Code Playgroud)

  • 设置查询字符串时,我有一些非常奇怪的行为.``reloadOnSearch:false```对我来说是关键. (4认同)