繁体   English   中英

可以刷新没有井号标签的页面并且在同一页面中? 角js

[英]could refresh page without hashtag and be in same page? Angular js

我想从导航栏中重新加载视图,这向我展示了浏览器服务器...我激活了html5Mode:

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

Exameple:

-我加载http:// localhost / myBase /

-当我单击链接时,我加载视图并在导航栏中显示此URL http:// localhost / myBase / page1

-然后,刷新页面,由于URL中没有井号标签,因此在导航器中显示服务器文件夹...

可以刷新没有井号标签的页面并且在同一页面中?

有一个复杂的解决方案:如果您可以访问apache配置,并且apache启用了de rewrite模块,则可以制定规则来重写url(如果其中不包含井号)。

 Options +FollowSymLinks
 RewriteEngine On
 RewriteBase /yourBaseUrl
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^([^#]+)$ #/$1 [NE,R]

将先前的代码放入.htaccess文件或virtualhost配置中,即可解决问题。 但是要仔细修改,您可能会破坏整个Web服务器。

编码愉快!

我认为这是不可能的,因为刷新是浏览器的事情。 它超出了javascript的范围。 浏览器将向服务器发送请求并再次呈现页面,这将再次进行角度引导,并且您的应用程序将获得初始状态。

看看这个: 路由和清理路径(无hashtag)在angularJS中不起作用

为了您的目的,我经常在这些解决方案之间使用两种方法:1)我使用angular-ui而不是ng-view,它使用状态而不是address,并且它以无法考虑“ #”,实际上是ui-router模块在“接收”地址时,知道它必须使用的视图。
2)第二种方式不太优雅,您可以在主页中放置一个脚本,如下所示:

function foo('somewhere'){
    window.onload=function(){
        $location.path(somewhere)
    }
}

我曾经使用过该解决方案,因为我已经有一个很大的应用程序,而且我不想替换ng-view,但是从那时起,我一直使用ui-router,因此在某个地方放置了一个引用实际页面的全局变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM