我使用的是Express,它从静态目录加载AngularJS。通常,我会请求http://localhost/
,在其中Express为我提供我的index.html
和所有正确的Angular文件,等等。在我的Angular应用程序中,我设置了这些路由,它们替换了ng-view
中的内容
$routeProvider.when('/', {
templateUrl: '/partials/main.html',
controller: MainCtrl,
});
$routeProvider.when('/project/:projectId', {
templateUrl: '/partials/project.html',
controller: ProjectCtrl,
});
$locationProvider.html5Mode(true);
在我的主页上,我有一个指向<a href="/project/{{project.id}}">
的链接,它将成功加载模板并将我定向到http://localhost/project/3
或我指定的任何ID。问题是,当我尝试将浏览器指向http://localhost/project/3
或刷新页面时,请求将发送到Express/Node服务器,它将返回Cannot GET /project/3
。
我如何设置我的快速路线以适应这种情况?我猜这将需要在Angular中使用$location
(尽管我更愿意避免他们使用的丑陋的?搜索和#hashes ),但我不知道如何设置快速路由来处理这一问题。
谢谢。
发布于 2012-11-05 13:06:30
我想我应该澄清一下,我对使用模板引擎不感兴趣,但是有了Angular拉取所有的HTML部分,Node在这里完全作为一个静态服务器工作(但它不是JSON API的。Brian Ford在这里展示了如何使用Jade做到这一点:http://briantford.com/blog/angular-express.html
我的应用程序是一个单页面应用程序,所以我为每个可能的URL模式创建了一个Express路由,每个模式都做同样的事情。
fs.readFile(__dirname + '/public/index.html', 'utf8', function(err, content) {
res.send(content);
});
我假设我必须将一些请求变量传递给Angular,但看起来Angular会自动处理它。
https://stackoverflow.com/questions/13222252
复制相似问题