และถ้าใช่ไวยากรณ์คืออะไร? เป้าหมายของฉันคือนำหน้า 's' ไปยังคำว่า 'ความคิดเห็น' เมื่อมีมากกว่าหนึ่ง ในเทมเพลต jQuery.ejs ในแอป JMVC หยุดพักต่อไปนี้ ไม่พบเอกสารเงื่อนไขใด ๆ ...
<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>
และถ้าใช่ไวยากรณ์คืออะไร? เป้าหมายของฉันคือนำหน้า 's' ไปยังคำว่า 'ความคิดเห็น' เมื่อมีมากกว่าหนึ่ง ในเทมเพลต jQuery.ejs ในแอป JMVC หยุดพักต่อไปนี้ ไม่พบเอกสารเงื่อนไขใด ๆ ...
<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>
คำตอบ:
สำหรับคนอื่น ๆ ที่สะดุดกับสิ่งนี้คุณยังสามารถใช้ ejs params / props ในประโยคเงื่อนไข:
formula.js ไฟล์:
app.get("/recipes", function(req, res) {
res.render("recipes.ejs", {
recipes: recipes
});
});
ไฟล์ formula.ejs:
<%if (recipes.length > 0) { %>
// Do something with more than 1 recipe
<% } %>
include
คำสั่งสามารถเขียนอินไลน์ตามเงื่อนไขได้หรือไม่? ที่เขียน<% if (true) { include foo/bar } %>
ดูเหมือนจะผิดพลาด มีวิธีการที่คล้ายกันหรือมีความจำเป็นที่จะทำลายออกโดยinclude
<% %>
เงื่อนไขทำงานได้หากมีโครงสร้างอย่างถูกต้องฉันพบปัญหานี้และคิดออก
สำหรับเงื่อนไขแท็กก่อนหน้าelse
จะต้องจับคู่กับแท็กปิดท้ายของก่อนหน้านี้if
มิฉะนั้นคำสั่งจะประเมินแยกกันและทำให้เกิดข้อผิดพลาด
ผิดพลาด!
<% if(true){ %>
<h1>foo</h1>
<% } %>
<% else{ %>
<h1>bar</h1>
<% } %>
แก้ไข
<% if(true){ %>
<h1>foo</h1>
<% } else{ %>
<h1>bar</h1>
<% } %>
หวังว่านี่จะช่วยได้
else
บรรทัดอื่นเช่นบล็อกรหัสแรกที่คุณพูดถึง ขอบคุณมากสำหรับการรวมตัวอย่างเหล่านี้ !!
ได้คุณสามารถใช้คำสั่งเงื่อนไขกับ EJS เช่น if else, ternary operator หรือแม้แต่ switch case ก็ได้เช่นกัน
ตัวอย่างเช่น
ตัวดำเนินการ Ternary :
<%- 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;
} %>
ดูเหมือนว่า EJS จะทำงานแตกต่างกันไปขึ้นอยู่กับว่าคุณใช้สัญกรณ์ {} หรือไม่:
ฉันได้ตรวจสอบและประเมินเงื่อนไขต่อไปนี้ตามที่คุณคาดหวัง:
<%if (3==3) {%> TEXT PRINTED <%}%>
<%if (3==4) {%> TEXT NOT PRINTED <%}%>
ในขณะที่สิ่งนี้ไม่:
<%if (3==3) %> TEXT PRINTED <% %>
<%if (3==4) %> TEXT PRINTED <% %>
คุณยังสามารถใช้else if
ไวยากรณ์:
<% if (x === 1) { %>
<p>Hello world!</p>
<% } else if (x === 2) { %>
<p>Hi earth!</p>
<% } else { %>
<p>Hey terra!</p>
<% } %>
ฉันรู้ว่านี่เป็นคำตอบที่ช้าไปหน่อย
คุณสามารถใช้คำสั่ง if และ else ใน ejs ได้ดังนี้
<% if (something) { %>
// Then do some operation
<% } else { %>
// Then do some operation
<% } %>
แต่มีอีกสิ่งหนึ่งที่ฉันอยากจะเน้นคือถ้าคุณใช้โค้ดในลักษณะนี้
<% if (something) { %>
// Then do some operation
<% } %>
<% else { %>
// Then do some operation
<% } %>
มันจะสร้างข้อผิดพลาด
หวังว่านี่จะช่วยให้ใครบางคน
เพียงแค่ทำให้โค้ดสั้นลงคุณก็สามารถใช้คุณสมบัติ ES6 ได้ สิ่งเดียวกันสามารถเขียนเป็น
app.get("/recipes", (req, res) => {
res.render("recipes.ejs", {
recipes
});
});
และ Templeate สามารถแสดงผลได้เหมือนกัน!
<%if (recipes.length > 0) { %>
// Do something with more than 1 recipe
<% } %>