我是表达/猫鼬的新手,并且无法理解为什么我的路线不起作用。我正在使用MEAN堆栈。
我有一般提议路线'/ offer'然后是特定优惠路线'/优惠/电视'和'/ offer / laptops'但是当试图路由到特定路线时它通过'/ offer'而不是我写的路线。
我错过了什么?
谢谢!
我的代码:
的index.html
<a href="#!/offers/televisions">Television Offers</a>
config.js
when('/offers',{
templateUrl: 'views/offers/list.html'
}).
when('/offers/televisions',{
templateUrl: 'views/offers/list.html'
}).
when('/offers/laptops',{
templateUrl: 'views/offers/list.html'
})
routes.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);
offers.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);
}
});
};
答案 0 :(得分:3)
将我的评论转化为答案:
您似乎在angular和express中定义相同的路径,因此当在angular中命中路径时,请求将不会发送到服务器。
您需要从客户端代码显式调用服务器路由。
干杯
答案 1 :(得分: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);
它应该解决您的问题,因为它匹配更具体的路线,然后才能找到更一般的路线:)