1

我对快递/猫鼬还很陌生,无法弄清楚为什么我的路线不起作用。我正在使用 MEAN 堆栈。

我有一条一般报价路线“/offers”,然后是特定报价路线“/offers/television”和“/offers/laptops”,但是当尝试路由到特定路线时,它通过“/offers”而不是我拥有的路线书面。

我错过了什么?

谢谢!

我的代码:

索引.html

<a href="#!/offers/televisions">Television Offers</a>

配置.js

    when('/offers',{
        templateUrl: 'views/offers/list.html'
    }).
    when('/offers/televisions',{
        templateUrl: 'views/offers/list.html'
    }).
    when('/offers/laptops',{
        templateUrl: 'views/offers/list.html'
    })

路由.js

 //Offer Routes
 var offers = require('../app/controllers/offers');
 app.get('/offers', offers.all); 
 app.get('/offers/televisions', offers.televisions); 
 app.get('/offers/laptops', offers.laptops); 

提供.js

/**
 * Find all offers
 */

exports.all = function(req, res){
console.log('all');
Offer.find({}, function(err, offers){
  if (err) {
    res.render('error', {
      status: 500
    });
  } else {
    res.jsonp(offers);
  }
});
};

/**
* Find all television offers
*/

exports.televisions = function(req, res){
  console.log('televisions');
  Offer.find({type: 'television'}, function(err, offers){
    if (err){
      res.render('error', {
      status:500
    });
  }else{
    console.log(offers);
    res.jsonp(offers);
  }
  });
};
4

2 回答 2

3

将我的评论变成答案:

您似乎在角度和快递中定义了相同的路线,因此当在角度内命中路线时,请求不会发送到服务器。

您需要从客户端代码中显式调用服务器路由。

干杯

于 2013-10-31T01:17:25.357 回答
2

更一般的路线应该在更具体的路线之后。在这种情况下,只要您的路由器匹配/offers,它将返回该结果,而无需访问下面更具体的选项。如果您这样重新排列路由器:

 // Offer Routes
 var offers = require('../app/controllers/offers');
 app.get('/offers/televisions', offers.televisions); 
 app.get('/offers/laptops', offers.laptops); 
 app.get('/offers', offers.all);

它应该可以解决您的问题,因为它在到达更一般的路线之前匹配更具体的路线:)

于 2013-10-24T18:09:24.250 回答