如何在AngularJS中设置一个查询参数而不用做路由?

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

我怎样才能设置该查询参数,而不会导致路由? 如果路由发生,页面上还有其他的东西会被重置(包括一个需要重新载入所有数据的插件),所以重要的是查询参数的改变。

总之,当我加载项目123时,我想要发生的是URL从以下变化:

www.myurl.com/#/Items

至:

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

没有任何路由发生。

什么是最好的方法来做到这一点?

在您的$ routeProviderconfiguration中,将reloadOnSearch设置为false:

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

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

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