可以刷新页面没有主题标签,并在同一页面?角度js

时间:2015-01-19 09:26:25

标签: javascript jquery angularjs html5

我想从导航栏重新加载我的视图,这会显示浏览器服务器... 我已激活html5Mode:

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

Exameple:

-I load http://localhost/myBase/

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

- 然后,我刷新页面,因为我在网址中没有主题标签,在导航器中显示服务器文件夹......

可以刷新没有主题标签的页面并且在同一页面中吗?

3 个答案:

答案 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,在某个地方你放了一个引用的全局变量实际页面。