2

学习一些 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标签中按预期工作

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

如果我选择红色标签,我的 URL 会添加一个额外的 # 成为

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

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

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

我的控制器发生了变化,它可以工作,所以为什么我会得到额外的 #

谢谢你的帮助

4

1 回答 1

3

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

$location hash-bang URL 的哈希前缀已从空字符串“”更改为 bang “!”。

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

解决方案:

要么开始使用 #! 而不是 # 或设置 $locationProvider 以仅使用 # 接受,如下所示:

appModule.config(['$locationProvider', function($locationProvider) {
    $locationProvider.hashPrefix('');
}]);
于 2016-12-26T09:30:39.737 回答