Angular Route - URL中的额外#

时间:2016-12-26 09:08:45

标签: angularjs ngroute angularjs-1.6

学习一些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/#!/

我的角度控制器在ng-view标签

中按预期工作

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

如果我选择红色标记,则我的网址会额外添加#jending

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

请注意,如果我手动更改为

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

我的控制器发生了变化并且它有效,所以我为什么要获得额外的#

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

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

  

$ location hash-bang网址的哈希前缀已从空字符串更改为&#34;&#34;到了爆炸&#34;!&#34;。

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

解决方案:

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

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