2013-10-24 77 views
1

我對錶達/貓鼬相當陌生,無法計算出爲什麼我的路線無法正常工作。我正在使用MEAN堆棧。表示js路線無法按預期與MEAN堆棧工作

我有一個全面優惠路線'/優惠',然後提供具體優惠路線'/優惠/電視'和'/優惠/筆記本電腦',但當嘗試路由到特定路線時,它會經過'/優惠'我寫的路線。

我錯過了什麼?

謝謝!

我的代碼:

的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); 
    } 
    }); 
}; 
+1

好吧,也許我不完全理解你的設置,但你似乎定義都在角和快速的走相同的路線,所以,當一條路由中的角命中,請求將不會發送到服務器。您需要明確調用服務器路由,並且您不會在您的示例中顯示該路由。 –

+0

這是正確的。該請求未被髮送以表達。謝謝。 – jeh

回答

3

談到我的評論到一個答案:

您似乎在angular和express中定義了相同的路由,所以當角度內命中路由時,請求將不會發送到服務器。

您需要從客戶端代碼顯式調用服務器路由。

乾杯

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); 

應該解決您的問題,因爲它得到更通用的一個前具體路由匹配:)