如何在AngularJS中更改URL且不重新加载页面

时间:2019-04-09 04:01:32

标签: javascript angularjs html5-history html5mode

我的AngularJS项目使用html5mode,我执行以下代码打开html5mode

  • 在HTML中:
...
<base href="/features-A/">
...
  • 在JS中:
app.config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5mode(true)
}])

注意 /features-A/不是我项目中的实际文件夹,它只是AWS CloudFront中定义的行为,因为我们有一些指向其他项目的URL /features-B,我们只需要知道:我的项目的入口文件是通过“ http://myhost.com还是“ http://myhost.com/features-A/”访问:{{ 1}}

这是浏览器的作用

  1. 当进入我的“登录”页面时,地址栏中的URL为

    index.html

  2. 转到“主页” 页面时,地址栏中的URL为

    http://myhost.com/features-A/signin

我们看到,AngularJS通过http://myhost.com/features-A/ome API更改了URL,并在URL内添加了History

我想要的

  1. 当人们访问“登录”时,URL没有/features-A/

    /features-A/

  2. 当人们访问“主页”页面时,URL带有http://myhost.com/signin

    /example

这将使我们的网站看起来像“登录”页面是一个独立于http://myhost.com/features-A/home之外的系统。

我尝试过的事情

我尝试了一些解决方案,但是没有用:

  1. /features-A/事件中动态设置基本href,但是URL仍然更改
  2. 使用HTML5历史记录API stateChangeSuccesspushState函数,这种方式会导致页面无限刷新

那么,有什么解决方案可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您如何不创建新的虚拟主机?

通过php

php -S localhost:8080

在文件夹的项目中键入此命令