【问题标题】:Angular Route - Extra # in URLAngular Route - URL 中的额外 #
【发布时间】:2017-05-10 18:38:12
【问题描述】:

学习一些 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 会添加一个额外的 #Being

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

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

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

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

感谢您的帮助

【问题讨论】:

标签: angularjs ngroute angularjs-1.6


【解决方案1】:

自 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('');
}]);

【讨论】:

  • 谢谢 - 我可能会坚持使用 ui-router 吗?想法?
  • DogCoffee:我们在发现问题的应用程序中使用了 ui-router,所以这可能无济于事 ;)
  • 干杯 - 到目前为止,ui-router 非常好。还有 $locationProvider.hashPrefix('');修复了 ngRoute 的问题。
猜你喜欢
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多