我知道从 AngularJs 路由 url 中删除“#”的一种可能方法是启用 html5 模式。像:
$locationProvider.html5Mode(true) if window.history && window.history.pushState
这是工作,但问题是在我单击菜单并切换到正确的页面并刷新它之后,它显示模板丢失!我很确定这是因为刷新页面后,视图会自动加载带有 url 而不是 AngularJs 路由 url 的 rails 视图。有人可以帮助我吗?
我知道从 AngularJs 路由 url 中删除“#”的一种可能方法是启用 html5 模式。像:
$locationProvider.html5Mode(true) if window.history && window.history.pushState
这是工作,但问题是在我单击菜单并切换到正确的页面并刷新它之后,它显示模板丢失!我很确定这是因为刷新页面后,视图会自动加载带有 url 而不是 AngularJs 路由 url 的 rails 视图。有人可以帮助我吗?
从角度文档
服务器端
使用此模式需要在服务器端重写 URL,基本上你必须重写所有指向应用程序入口点的链接(例如 index.html)
这样做的原因是,当您第一次访问页面 (/about) 时,例如在刷新之后,浏览器无法知道这不是一个真实的 url,因此它会继续加载它。但是,如果您首先加载了根页面和所有 javascript 代码,那么当您导航到 /about 时,角度可以在浏览器尝试访问服务器并相应地处理它之前进入那里