1

Express.js 的路由/question/ask

app.get('/question/ask', function (req, res){
    console.log('index.js');
    console.log('came to question/:id');
    res.render('app');
});

对应的angularjs路由为:-

when('/ask', {
  templateUrl: 'partials/askQuestion',
  controller: 'xController'
}).

而它应该是:-

when('/question/ask', {
  templateUrl: 'partials/askQuestion',
  controller: 'xController'
}).

我在$locationProvider.html5Mode(true);模式下工作。

无论如何我可以让后来的 angularjs 路由工作。我正在使用 angularjs 1.1.5 版本。

编辑:-

app.get('/*', function (req, res){
    console.log('index.js');
    console.log('came to question/:id');
    res.render('app');
});

有同样的问题,角度路由只路由最后一个/ask/question/ask

对我来说,问题是我只能做以下其中一项:-

www.example.com/question/:qId 
www.example.com/discussion/:aId

因为应用程序将只捕获 1 when('/:id', {,因为它不包括前一个/question//discussion/

4

2 回答 2

0

好吧,如果你在 Express 和 Angular 上有相同的路由,如果用户直接在浏览器中输入 url,你会点击 Express 路由,但如果用户在应用程序中导航,那么他会点击 Angular 路由。

这是你想要的吗 ?

有些人所做的是在服务器上为 REST API 提供一组不同的路由,并且无论用户键入什么作为 URL,都可以捕获所有路由来为应用程序提供服务,当服务器路由出现时将用户带到主页打。在课程的应用程序中,导航由 Angular 路由处理。问题是你没有得到深度链接。

其他一些应用程序在服务器和客户端上都有相同的路由,这样他们就可以无论如何都提供一些内容。

有些人会编写相关的路由重写,以确保您同时获得应用程序引导代码和所需的 URL,从而允许深度链接。

干杯

于 2013-11-08T10:16:59.410 回答
0

使用 Angular 版本1.2.0-rc.3可以解决问题。

改变:

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

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

并包括:-

script(type='text/javascript', src='js/angular-route.js')
于 2013-11-08T13:29:43.223 回答