路由问题b / w angularjs和expressjs

时间:2013-11-08 06:24:00

标签: angularjs express routing angularjs-routing

/question/ask

的Express.js路由
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/

2 个答案:

答案 0 :(得分:0)

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

这是你想要的吗?

有些做的是在服务器上为REST API设置一组不同的路由,并捕获为应用程序提供服务的所有路由,无论用户输入什么类型的URL,将用户带到主页时服务器路由被击中。在应用程序中,导航由Angular路线处理。问题是你没有深层链接。

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

有些人会编写涉及路由重写的内容,以确保您获得应用程序引导代码和所需的URL,从而允许深层链接。

干杯

答案 1 :(得分:0)

使用角度版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')