क्या मैं ईजेएस टेम्प्लेट (जेएमवीसी में) के साथ सशर्त बयानों का उपयोग कर सकता हूं?


101

और यदि हाँ, तो वाक्य रचना क्या है? मेरा लक्ष्य एक से अधिक शब्द होने पर एक 's' शब्द को प्रस्तुत करना है। JMVC ऐप में jQuery.ejs टेम्पलेट में। निम्नलिखित टूट जाता है। मैं सशर्त के लिए कोई डॉक्स नहीं ढूँढ सकता ...

<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>

आपका सिंटैक्स सही दिखता है, और मेरे लिए काम करता है। क्या आप सुनिश्चित हैं कि var commentsNumber मौजूद है और पूर्णांक है?
रयान क्रिस्पिन हेनीज

1
हाँ, अजीब बात है कि डॉक्स में सशर्त का उल्लेख नहीं किया गया है!
10

जवाबों:


171

दूसरों के लिए जो इस पर ठोकर खाते हैं, आप सशर्त बयानों में ईजेएस परम / प्रॉप्स का भी उपयोग कर सकते हैं:

recipes.js फ़ाइल:

app.get("/recipes", function(req, res) {
    res.render("recipes.ejs", {
        recipes: recipes
    });
});

recipes.ejs फ़ाइल:

<%if (recipes.length > 0) { %>
// Do something with more than 1 recipe
<% } %>

3
क्या आप एक includeबयान के मामले में , सशर्त इनलाइन लिख सकते हैं? यह लेखन <% if (true) { include foo/bar } %>त्रुटि के लिए प्रकट होता है। वहाँ एक विधि समान है या यह बाहर तोड़ने के लिए आवश्यक है includeद्वारा <% %>
कुआनब

धन्यवाद, मैं इसे आज़माने से पहले इस उत्तर की खोज कर रहा था।
CTala

धन्यवाद! मैं सर्वर पर परिवर्तनों से सशर्त तत्वों को प्रदर्शित करने की कोशिश कर रहा था। आपके उत्तर ने मुझे दिखाया कि मुझे क्लाइंट पर सब कुछ का मूल्यांकन करने की आवश्यकता है।
बिल्डपैक्स

161

सशर्त काम करते हैं यदि वे सही ढंग से संरचित हैं, तो मैं इस मुद्दे पर भाग गया और यह पता लगा लिया।

सशर्त के लिए, पहले वाले टैग को पहले elseके अंतिम टैग के साथ जोड़ा जाना चाहिए ifअन्यथा बयान अलग से मूल्यांकन करेंगे और एक त्रुटि उत्पन्न करेंगे।

त्रुटि!

<% if(true){ %>
   <h1>foo</h1>
<% } %>
<% else{ %>
   <h1>bar</h1>
 <% } %>

सही बात

<% if(true){ %>
   <h1>foo</h1>
 <% } else{ %>  
   <h1>bar</h1>
<% } %>

आशा है कि इससे मदद मिली।


2
धन्यवाद !! इसने मुझे कुछ देर के लिए चिपका दिया।
xblymmx

3
यह अविश्वसनीय रूप से मददगार था क्योंकि मैं एक ऐसे मुद्दे पर चल रहा था, जिसमें मैं अपना elseपहला कोड ब्लॉक जैसे एक अलग लाइन पर डाल रहा था । इन उदाहरणों को शामिल करने के लिए बहुत बहुत धन्यवाद !!
माइकल प्लैट

22

EJS इस बात पर निर्भर करता है कि आप {} नोटेशन का उपयोग करते हैं या नहीं:

मैंने जाँच की है और निम्न स्थिति का मूल्यांकन किया जाता है जैसा कि आप उम्मीद करेंगे:

<%if (3==3) {%>  TEXT PRINTED  <%}%>
<%if (3==4) {%>  TEXT NOT PRINTED  <%}%>

जबकि यह एक नहीं है:

<%if (3==3) %>  TEXT PRINTED  <% %>
<%if (3==4) %>  TEXT PRINTED  <% %>  

11
क्या आप सिंगल स्पेस कैरेक्टर से कुछ करने की उम्मीद करेंगे?
UpTheCreek

22

हां, आप ईजेएस के साथ सशर्त विवरण का उपयोग कर सकते हैं जैसे कि अन्य, टर्नरी ऑपरेटर या स्विच केस भी

उदाहरण के लिए

टर्नरी ऑपरेटर : <%- role == 'Admin' ? 'Super Admin' : role == 'subAdmin' ? 'Sub Admin' : role %>

स्विच केस

<% switch (role) {
case 'Admin' : %>
        Super Admin
        <% break;

case 'eventAdmin' : %>
        Event Admin
        <% break;

case 'subAdmin' : %>
        Sub Admin
        <% break;

} %>

16

आप else ifसिंटैक्स का भी उपयोग कर सकते हैं :

<% if (x === 1) { %>
    <p>Hello world!</p>
<% } else if (x === 2) { %>
    <p>Hi earth!</p>
<% } else { %>
    <p>Hey terra!</p>
<% } %>

4
आपको यहाँ पर प्रकाश डालने की आवश्यकता है कि क्लोजिंग ब्रैकेट को सबसे निश्चित रूप से उसी लाइन में उपयोग किया जाना चाहिए जैसे कि / अन्यथा
पाउलो

1

मुझे पता है कि यह थोड़ा देर से जवाब है,

आप का उपयोग कर सकते हैं अगर और इस प्रकार के रूप में ejs में बयान

<% if (something) { %>
   // Then do some operation
<% } else { %>
   // Then do some operation
<% } %>

लेकिन एक और बात है जिस पर मैं जोर देना चाहता हूं कि यदि आप इस तरह से कोड का उपयोग करते हैं,

<% if (something) { %>
   // Then do some operation
<% } %>
<% else { %>
   // Then do some operation
<% } %>

यह एक त्रुटि पैदा करेगा।

आशा है कि यह किसी की मदद करेगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.