1

我知道从 AngularJs 路由 url 中删除“#”的一种可能方法是启用 html5 模式。像:

$locationProvider.html5Mode(true) if window.history && window.history.pushState

这是工作,但问题是在我单击菜单并切换到正确的页面并刷新它之后,它显示模板丢失!我很确定这是因为刷新页面后,视图会自动加载带有 url 而不是 AngularJs 路由 url 的 rails 视图。有人可以帮助我吗?

4

1 回答 1

2

角度文档

服务器端
使用此模式需要在服务器端重写 URL,基本上你必须重写所有指向应用程序入口点的链接(例如 index.html)

这样做的原因是,当您第一次访问页面 (/about) 时,例如在刷新之后,浏览器无法知道这不是一个真实的 url,因此它会继续加载它。但是,如果您首先加载了根页面和所有 javascript 代码,那么当您导航到 /about 时,角度可以在浏览器尝试访问服务器并相应地处理它之前进入那里

感谢重新加载页面在 AngularJS HTML5 模式下给出了错误的 GET 请求

于 2014-12-05T10:26:46.907 回答