2014-11-21 13 views
5

Benim layout.ejs şablonumda hangi sayfada olduğuma bağlı olarak, her bir navigasyon bağlantısında 'current' sınıfı oluşturmak istiyorum.Node.js, Express, EJS - Gezinme alanındaki geçerli sayfadaki aktif sınıf

// About 
exports.about = function(req, res) { 
    res.render('content/about.ejs', { 
     title: 'About' 
    }); 
}; 

Ve layout.ejs içinde ben dinamik hale edilmesini istediğiniz aşağıdakiler vardır:

Halen benim ekspres kontrolör endeksi bu gibi görünüyor.

<ul class="nav" id="nav"> 
    <li><a href="/">Home</a></li> 
    <li class="current"><a href="/about">About</a></li> 
    <li><a href="/">Contact</a></li> 
</ul> 

Bunu nasıl gerçekleştireceğinize dair herhangi bir fikir?

cevap

16

Sen gibi şablon şey bir res.render verilerinde page_name: 'about' ve ardından şunları içerebilir:

<li <% if (page_name === 'about') { %>class="current" <% } %> ><a href="/about">About</a></li> 

Ben sözdizimi test etmedi, ama bu özü bu.

+1

Teşekkür ederiz. Sözdizimi de dahil olmak üzere, gerçekten doğrudur. Çok takdir edildi. Henüz oy kullanma yetkim yok, bu yüzden cevabı kabul edeceğim. – dinkco

+0

"page_name" öğesini otomatik olarak "app.get()" girişinden almanın herhangi bir yolu var mı? – jeff

+0

'req.path' muhtemelen en yakın şeydir. Dokümanlar için [burada] (https://expressjs.com/en/api.html#req.path) adresine bakın. Sayfa_adı'na yakın bir şey elde etmek için eğik çizgileri yoldan kolayca çıkartabilirsiniz. Ancak iç içe geçmiş yol adları (örneğin '/ about/fred') o zaman tam olarak işe yaramazdı. Req.path'in (örn., 'Req.path.replace (/ \ // g, '_')') bir sayfanın isminin – thataustin

İlgili konular