我有
<base href="/!#/">
位于 index.html 文件的顶部。当我转到网址http://localhost:5000/
时,一切正常,它会立即添加#!/
,因此网址为http://localhost:5000/#!/
,页面会按预期显示。
在服务器端,我有以下代码,允许我使用我的文件
app.use(express.static(path.join(__dirname, 'public')));
我的文件结构如下:
bookApp(folder)
server.js
public(folder)
index.html
app.js(ngRoute)
views(folder)
css(folder)
controllers(folder)
我的AngularJS路由是:
(function () {
'use strict';
angular
.module('app', [
'ngRoute'
])
.config(config);
function config ($routeProvider) {
$routeProvider
.when('/', {
controller: 'PostsCtrl',
templateUrl: 'views/posts.html'
})
.when('/register', {
controller: 'registerCtrl',
templateUrl: 'views/register.html'
})
.when('/login', {
controller: 'loginCtrl',
templateUrl: 'views/login.html'
})
.otherwise('/');
}
})();
第一页(views / posts.html)按预期加载,但是当我点击
<li><a href="/login" title="Login to bookApp">Sign in</a></li>
网址为http://localhost:5000/login
,不像我想的那样http://localhost:5000/!#/login
。
并显示:
无法GET /登录
当我手动将网址更改为http://localhost:5000/#!/login
时,它可以正常工作。
如何解决此问题?
我看到的唯一解决方案是删除<base>
标记,并在href
指令中手动添加!#中的每个链接。
答案 0 :(得分:0)
您似乎忘记了ng-view指令:<div ng-view></div>
,它是路由提供的内容的容器。如果您将所有内容都包含在一个文件中,请将其放在脚本上方。
您也可以尝试:
<ng-view></ng-view>
<div class="ng-view"></div>
您还在使用Angular 1吗?我知道这在技术上没有回答你的问题,但我强烈建议你开始使用最新的Angular。您仍然可以保留遗留代码,但它会使您正在做的事情变得更加清晰和清晰。