AngularJS重定向而不推送历史状态

kyl*_*der 35 angularjs angularjs-routing

我正在开发一个AngularJS应用程序,该应用程序具有捕获所有路径(例如.when('/:slug', {...)),这是支持应用程序的先前(非角度)版本的遗留URL格式所必需的.响应catch的控制器都尝试拉动相关对象,如果没有找到,则使用该$location.path方法重定向到404页面.这有助于将用户带到404页面,但是当用户在浏览器中回击时,它会将他们带回到首先强制他们进入404页面的页面,并且他们最终无法逃脱循环.

我的问题是,是否存在1)处理这种情况的更好模式,或者2)是否有办法重新路由不会在浏览器中强制执行历史推送状态的用户?

thr*_*888 58

您可以更改URL,而不添加到历史状态,发现这里在"替换法".这实际上与调用HTML5的history.replaceState()相同.

$location.path('/someNewPath').replace();
Run Code Online (Sandbox Code Playgroud)

我没有发现可以在不更改URL的情况下更改视图.我发现,改变视图的唯一方法是更改​​位置路径.

  • 尼斯.它也适用于`.search()` (3认同)