我正在开发一个AngularJS应用程序,该应用程序具有捕获所有路由(例如.when('/:slug', {...))的功能,这对于从该应用程序的先前(非角度)版本中支持旧版网址格式是必需的。响应捕获的控制器都尝试拉相关对象,如果找不到,则使用该$location.path方法重定向到404页面。这可以使用户进入404页面,但是当用户在其浏览器中进行回击时,会将他们带回到最初迫使他们进入404页面的页面,最终他们无法逃脱循环。
.when('/:slug', {...)
$location.path
我的问题是,是否有1)更好的模式来处理这种情况,或2)是否有重新路由用户的方法而不强制浏览器中的历史记录推送状态?
您可以更改URL,而不添加到历史状态,发现这里在“替换法”。这实际上与调用HTML5的history.replaceState()相同。
$location.path('/someNewPath').replace();
我还没有发现无需更改url就可以更改视图。我发现,更改视图的唯一方法是更改位置路径。