我上个月一直在使用angular v1.5.8
和angular-route v1.5.8
以及node v 7.1.0
(nvm
)开发AngularJS应用。突然之间,我的网址包含一个hashbang,并且路由不起作用,所以我无法更改页面。
而不是
http://localhost:8080/#/about
当我第一次加载页面时,我得到http://localhost:8080/#!/about
当我尝试通过点击http://localhost:8080/#/chat
更改为<a href="#/chat">
时,我会http://127.0.0.1:3000/#!/about#%2Fchat
。
有谁知道为什么会发生这种情况或者我可能已经改变了什么导致这种新行为?我已经删除了node_modules
和npm install
ed,但仍然会发生。
相关代码如下
的index.html
<ul class="nav navbar-nav navbar-right">
<li><a href="#/about">About</a></li>
<li><a href="#/chat">Chat</a></li>
</ul>
routes.js
angular.module('routes', ['ngRoute'])
.config(['$routeProvider', function($routeProvider){
$routeProvider
.when('/about', {
templateUrl: 'views/about.html',
controller: 'AboutController'
})
.when('/chat', {
templateUrl: 'views/chat.html',
controller: 'ChatController'
})
.otherwise({
redirectTo: '/about'
});
}]);
答案 0 :(得分:0)
查看$ locationProvider,它的hashPrefix允许你指定你的斜杠前缀。如果您希望代码工作,请将$ locationProvider放入您的依赖项中并输入以下内容
$locationProvider.hashPrefix('')
config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){
$locationProvider.hashPrefix('')
$routeProvider
.when('/about', {
templateUrl: 'views/about.html',
controller: 'AboutController'
})