【问题标题】:How change URL and don't reload page in AngularJS如何在 AngularJS 中更改 URL 并且不重新加载页面
【发布时间】:2019-04-09 04:01:31
【问题描述】:

我的AngularJS项目使用html5mode,我做这些代码打开html5mode

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

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

这是浏览器的作用

  1. 进入我的“登录”页面时,地址栏中的网址是

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

  2. 进入“首页”页面时,地址栏中的URL为

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

正如我们所见,AngularJS 通过 History API 更改了 URL,将 /features-A/ 添加到 URL 中

我想要什么

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

    http://myhost.com/signin

  2. 当人们访问“主页”页面时,URL 有/example

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

这将使我们的网站看起来像登录页面是一个独立于/features-A/之外的系统。

我尝试了什么

我尝试了一些解决方案,但没有奏效:

  1. stateChangeSuccess 事件中动态设置基本 href 但 URL 仍然更改
  2. 使用HTML5历史APIpushStatereplaceState函数,这样会导致页面无限刷新

那么,有什么办法可以解决这个问题吗?

【问题讨论】:

  • base 标签更改为 /,然后相应地定义您的路线。
  • @varunagarwal /example/ 在 HTML 中定义并由 AngularJs 自动添加
  • 如果您将基本标签更改为 / 它应该可以工作。
  • @Rey Wang 如果可以的话,请分享这方面的代码,以便我们更好地检查这个问题
  • @ReyWang 转到index.html 并查找&lt;base&gt; 标签。将其从 /example/ 更改为 /

标签: javascript angularjs html5-history html5mode


【解决方案1】:

你怎么不创建一个新的虚拟主机?

通过 php

php -S localhost:8080

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

【讨论】:

  • 我的问题是/example/是由AngularJS自动添加的,我认为router不是问题
  • 我的项目在AWS S3上,所以这种方式可能行不通
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 2016-02-01
相关资源
最近更新 更多