如何在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);