Angular 路线 - URL 中的额外#

Angular Route - Extra # in URL

学习一些东西 Angular - 我被困在路由上

这是我的 angular 配置

var meanApp = angular.module('carz', ['ngRoute']);


meanApp.config(function($routeProvider) {
    $routeProvider
        .when('/', {
            templateUrl: 'home.html',
            controller: 'mainCtrl'
        })
        .when('/red', {
            templateUrl: 'red.html',
            controller: 'redCtrl'
        });
});

这是我的链接

<a href="#">Home</a>
<a href="#red">Red</a>

当我加载我的节点应用程序时,我被定向到

http://localhost:8080/#!/

我的 angular 控制器在 ng-view 标签内按预期工作

但是我无法使用上面的链接从一个控制器切换到另一个控制器。

如果我select红色标签我的URL添加了一个额外的#becoming

http://localhost:8080/#!/#red

注意如果我手动改成

http://localhost:8080/#!/red

我的控制器改变了并且可以正常工作,所以为什么我要得到额外的#

感谢您的帮助

自 AngularJS 1.6 以来,路由发生重大变化:

The hash-prefix for $location hash-bang URLs has changed from the empty string "" to the bang "!".

(见https://github.com/angular/angular.js/blob/master/CHANGELOG.md

解决方案:

要么开始使用#!代替 # 或者将 $locationProvider 设置为仅使用 # 接受,如下所示:

appModule.config(['$locationProvider', function($locationProvider) {
    $locationProvider.hashPrefix('');
}]);