Javascript 哈希模式下的角度JS链接行为不正确

Javascript 哈希模式下的角度JS链接行为不正确,javascript,angularjs,url,Javascript,Angularjs,Url,在我的应用程序中,我的页面中的链接存在一些问题 因此,只需简单概述一下: 我已经关闭了HTML5模式 这是我的路由设置 $routeProvider .when('/',{ templateUrl: '/views/search.html', controller : 'SearchCtrl' }) .when('/result',{ templateUrl: '/views/result.html', controller : 'resul

在我的应用程序中,我的页面中的链接存在一些问题

因此,只需简单概述一下:

  • 我已经关闭了HTML5模式

  • 这是我的路由设置

      $routeProvider
        .when('/',{
          templateUrl: '/views/search.html',
          controller : 'SearchCtrl'
        })
    .when('/result',{
      templateUrl: '/views/result.html',
      controller : 'resultCtrl'
    })
    .when('/no-result',{
      templateUrl: '/views/no-result.html',
      controller : 'noResultCtrl'
    })
    .otherwise({
      redirectTo: '/'
    });
    
    $locationProvider.html5Mode(false)

我发现的问题是url的行为

  • 如果我只是在我的域中键入,页面将很好地加载到以下url
域/#和视图正确加载并加载控制器

  • 但是,假设我的页面中有一个a href,我想链接回主页
如下

<a ng-href="/" class="link-dark">Link </a>

它会将url更改为Domain/#,但不会加载视图和控制器

但是如果我把url改成

<a ng-href="/#/" class="link-dark">Link </a>

它加载正确


这是正常的行为吗?

这是正常的行为。如果你使用像Angular Ui router这样的东西,你实际上可以使用状态,而不必使用#符号。

使用。。
它无需任何额外的努力就能解决您的问题,并为路由提供了许多其他功能。

这是一篇优秀的文章,解释了hashbang使用(#)时角度路由是如何工作的

你会看到,是的,这是正常的行为


为了进一步探索,我会说您可以自定义angular来删除hashbang,但如果您希望能够通过URL访问应用程序的任何页面,我建议您保留它。例如,如果选择删除此hashbang,则必须在服务器上添加一个端点,该端点将每次调用的应用程序主页返回到类似“/something”的url,而不是“/#/something”。如果我不够清楚,请尽管问。

y这很正常
hrefs
应该是
,而
when
应该是
。when('/',{