AngularJS 在不刷新页面的情况下更改 URL

AngularJS changing URL without refreshing page

我正在使用 AngularJS 构建网站,但在我尝试实现的场景中遇到了路由问题。 我正在尝试更改浏览器 url,并防止 AngularJS 重定向到新给定的 url。这是场景:

  1. 用户从 url 的页面中选择了一个项目: www.mywebsite.com/my-page

  2. 所选项目正在当前页面上作为模式打开,但是 url www.mywebsite.com/specific-page/item-name (这个url改变应该不会引起页面刷新,只是视觉上改变url)

  3. 当用户点击 'Back' 或关闭模式时,他应该返回: www.mywebsite.com/my-page (同样,这个 url 的变化不应该导致页面刷新,只是改变 url 视觉)

可以在 Pinterest 网站上找到对我正在尝试做的事情的一个很好的参考。当用户单击某个项目时,将打开一个模式,更改 url,但不会刷新页面。当用户关闭模式并返回主页时,也会发生同样的情况。

实现此方案的最佳方法是什么?

谢谢。

我用 ui-router 做那种事情。

它比标准 angular-route / ngRoute

更灵活

如果您使用 modal,那么 Angular Directives for Bootstrap 是最好的方法。 它对我的其他事情也有帮助。

好的,我找到了未记录的 AngularJS $browser 对象。 它有 $browser.url 方法,只改变浏览器的 url 而不会真正重定向页面。

https://github.com/angular/angular.js/blob/master/src/ng/browser.js