我想从导航栏重新加载我的视图,这会显示浏览器服务器... 我已激活html5Mode:
if(window.history && window.history.pushState) {
$locationProvider.html5Mode(true);
}
Exameple:
-I load http://localhost/myBase/
- 当我点击链接时,我会加载视图并在导航栏中显示此网址http://localhost/myBase/page1
- 然后,我刷新页面,因为我在网址中没有主题标签,在导航器中显示服务器文件夹......
可以刷新没有主题标签的页面并且在同一页面中吗?
答案 0 :(得分:2)
您的问题有一个复杂的解决方案:如果您可以访问apache配置,并且apache已启用de rewrite模块,则可以制定规则来重写URL,以防不包含主题标签。
Options +FollowSymLinks
RewriteEngine On
RewriteBase /yourBaseUrl
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^#]+)$ #/$1 [NE,R]
将前面的代码放在 .htaccess 文件或 virtualhost 配置中,可以解决问题。但要小心修改,你可以打破整个网络服务器。
快乐的编码!
答案 1 :(得分:0)
我认为这不可能,因为刷新是浏览器的事情。它超出了javascript的范围。浏览器将向服务器发送请求并再次呈现页面,这将再次进行角度引导,您的应用程序将获得初始状态。
看看这个:routing and clean path (no hashtag) not working in angularJS
答案 2 :(得分:0)
为了您的目的,我经常在这些解决方案中使用两个, 1)我使用angular-ui而不是ng-view,它使用状态而不是地址,并且它以一种你不能考虑'#'的方式处理导航栏中的地址,实际上是ui-router模块'收到'一个地址,知道它必须使用的观点 2)第二种方式它不那么优雅,你可以在主页面中放置一个脚本,如:
function foo('somewhere'){
window.onload=function(){
$location.path(somewhere)
}
}
我曾经使用过那个解决方案,因为我已经有了一个很大的应用程序而且我不想替换ng-view,但是从那时起我总是使用ui-router,在某个地方你放了一个引用的全局变量实际页面。