2014-11-21 6 views
5

मैं अपने लेआउट.ईजेएस टेम्पलेट में किस पेज पर हूं, इस पर निर्भर करता हूं कि मैं अपने प्रत्येक नेविगेशन लिंक पर 'वर्तमान' कक्षा प्रस्तुत करना चाहता हूं।नोड.जेएस, एक्सप्रेस, ईजेएस - नेविगेशन में वर्तमान पृष्ठ पर सक्रिय कक्षा

वर्तमान में, मेरी एक्सप्रेस नियंत्रक सूचकांक इस तरह दिखता है:

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

और मेरे layout.ejs में मैं निम्नलिखित, पसंद जो मैं गतिशील प्रदान की जा चाहते हैं।

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

यह कैसे प्राप्त करने के लिए कोई भी विचार?

उत्तर

16

आप res.render डेटा में एक page_name: 'about' और उसके बाद की तरह टेम्पलेट कुछ में शामिल हो सकते हैं:

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

मैं वाक्य रचना का परीक्षण नहीं किया था, लेकिन यह है कि सार है।

+1

धन्यवाद। सिंटैक्स समेत यह वास्तव में सही है। बहुत सराहना की। मेरे पास अभी तक कोई मतदान शक्ति नहीं है, इसलिए मैं अभी जवाब स्वीकार कर दूंगा। – dinkco

+0

'app.get()' 'इनपुट से स्वचालित रूप से' page_name' प्राप्त करने का कोई तरीका? – jeff

+0

'req.path' शायद निकटतम चीज़ है। दस्तावेज़ों के लिए [यहां] (https://expressjs.com/en/api.html#req.path) देखें। पेज_नाम के करीब कुछ पाने के लिए आप पथ से स्लेश को आसानी से हटा सकते हैं। लेकिन नेस्टेड पथ नाम (जैसे '/ about/fred') ठीक से काम नहीं करेंगे। आप शायद एक सम्मेलन बनाने के लिए अंडरस्कोर में स्लेश बदल सकते हैं जहां req.path के अंडरस्कोर संस्करण (उदाहरण के लिए, 'req.path.replace (/ \ // g,' _ ') ') पृष्ठ नाम – thataustin

संबंधित मुद्दे