一尘不染

angularjs 1.6.0(现在最新)路由不起作用

angularjs

我期待在Stackoverflow上看到这个问题,但是没有。显然,我是唯一出现此问题的人,在我看来这很普遍。

我正在执行一个基本项目,但是即使到目前为止我所做的一切似乎都是正确的,但路线似乎也不起作用。

我的文件中有这段html index.html

<html>
<head ng-app="myApp"> 
    <title>New project</title>
    <script src="https://code.angularjs.org/1.6.0/angular.min.js"></script>
    <script src="https://code.angularjs.org/1.6.0/angular-route.min.js"></script>

    <script src="app.js"></script>
</head>
<body>
    <a href="#/add-quote">Add Quote</a>
    <div ng-view ></div>
</body>
</html>

这是我的app.js

var app = angular.module('myApp', ['ngRoute']);


app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        .when('/add-quote', {
            templateUrl: 'views/add_quote.html',
            controller: 'QuoteCtrl'
        })
        .otherwise({ redirectTo: '/' });
}]);

现在,当我刚访问页面时,这就是我从URL中获得的内容:

http:// localhost:8000 / admin#!/

当我单击Add quote按钮时,得到以下信息:

http:// localhost:8000 / admin#!/#%2Fadd-
quote

这可能是什么问题?感谢帮助


阅读 265

收藏
2020-07-04

共1个答案

一尘不染

只需#!在href中使用hashbang :

 <a href="#!/add-quote">Add Quote</a>

由于aa077e8,用于$
location hash-bang URL的默认哈希前缀已从空字符串('')更改为bang('!')。

如果您实际上不希望使用哈希前缀,则可以通过向应用程序中添加配置块来恢复以前的行为:

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

有关更多信息,请参见


抱歉让我骑着马,但是…这是怎么被释放的? 这是一个巨大的,破坏性的错误。—
@MiloTheGreat

由于参考规范已经正式弃用,因此应恢复由#14202引起的重大更改#15715

我将关闭此问题,因为我们没有任何反馈。 如果您可以提供新的反馈意见,请随时重新打开此问题。


https://github.com/angular/angular.js/issues/15715#issuecomment-281785369

2020-07-04