আমি কি ইজেএস টেম্পলেটগুলি (জেএমভিসিতে) সহ শর্তযুক্ত বিবৃতি ব্যবহার করতে পারি?


105

এবং যদি হ্যাঁ, সিনট্যাক্সটি কী? আমার লক্ষ্য হ'ল 'মন্তব্য' শব্দের একটি 'গুলি' প্রিপেন্ড করা যখন একটির বেশি থাকে। একটি জেএমভিসি অ্যাপ্লিকেশনে একটি jQuery.ejs টেমপ্লেটে। নিম্নলিখিত বিরতি। শর্তসাপেক্ষে আমি কোনও ডক্স পাচ্ছি না ...

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

আপনার বাক্য গঠনটি ঠিক দেখাচ্ছে এবং আমার জন্য কাজ করে। আপনি কি নিশ্চিত যে বিভিন্ন মন্তব্য সংখ্যা রয়েছে এবং এটি একটি পূর্ণসংখ্যা?
রায়ান ক্রিস্পিন হেনেইস 16

4
হ্যাঁ, আশ্চর্যজনক যে শর্তাবলীর ডক্সে উল্লেখ নেই!
আপক্রিক 10

উত্তর:


175

অন্যেরা যা এতে হোঁচট খায়, আপনি শর্তাধীন বিবৃতিতে ইজেএস প্যারাম / প্রপস ব্যবহার করতে পারেন:

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

4
আপনি কি কোনও includeবক্তব্যের ক্ষেত্রে শর্তসাপেক্ষ ইনলাইন লিখতে পারেন? এটি লেখার <% if (true) { include foo/bar } %>ক্ষেত্রে ত্রুটি দেখা দেয়। সেখানে একটি পদ্ধতি অনুরূপ অথবা এটি আউট বিরতি করা প্রয়োজন includeদ্বারা <% %>
কুয়ানব

ধন্যবাদ, চেষ্টা করার আগে আমি এই উত্তরটির সন্ধান করছিলাম।
সিটালা

ধন্যবাদ! আমি সার্ভারে পরিবর্তনগুলি থেকে শর্তাধীন উপাদানগুলি প্রদর্শনের চেষ্টা করছিলাম। আপনার উত্তরটি আমাকে দেখিয়েছিল যে আমার ক্লায়েন্টের সমস্ত কিছুর মূল্যায়ন করতে হবে।
বিল্ডপ্যাক্স

168

শর্তাবলী যদি তারা সঠিকভাবে কাঠামোগত হয় তবে কাজ করে, আমি এই ইস্যুটিতে ছড়িয়ে পড়েছি এবং এটি বের করেছি।

শর্তসাপেক্ষে, elseআগের ট্যাগটি আগেরটির শেষ ট্যাগের সাথে যুক্ত করতে হয় ifঅন্যথায় বিবৃতি পৃথকভাবে মূল্যায়ন করে ত্রুটি তৈরি করে produce

ত্রুটি!

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

সঠিক

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

আশা করি এটি সাহায্য করেছে


4
ধন্যবাদ !! এটি আমাকে কিছুক্ষণ আটকে রেখেছিল।
xblymmx

4
এটি অবিশ্বাস্যরূপে সহায়ক ছিল যেহেতু আমি এমন একটি সমস্যা নিয়ে চলেছিলাম যেখানে আমি elseউল্লেখ করেছি প্রথম কোড ব্লকের মতো একটি ভিন্ন লাইনে আমার প্রযোজনা করা হচ্ছে। এই উদাহরণগুলি অন্তর্ভুক্ত করার জন্য আপনাকে অনেক ধন্যবাদ !!
মাইকেল প্ল্যাট

23

হ্যাঁ, আপনি EJS এর ​​সাথে শর্তসাপেক্ষ বিবৃতি ব্যবহার করতে পারেন অন্যথায় যেমন, টের্নারি অপারেটর বা এমনকি স্যুইচ কেসও

উদাহরণ স্বরূপ

টার্নারি অপারেটর : <%- 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;

} %>

22

আপনি}} স্বরলিপি ব্যবহার করেন কিনা তা নির্ভর করে ইজেএস আলাদা আচরণ করে বলে মনে হচ্ছে:

আমি যাচাই করেছি এবং নিম্নলিখিত শর্তটি যেমনটি আপনি প্রত্যাশা করতেন তেমন মূল্যায়ন করা হয়:

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

যদিও এই এক না:

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

11
আপনি কি একটি একক স্পেস ক্যারেক্টার কিছু করার আশা করবেন?
আপক্রিক 10

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

আমি জানি এটি একটু দেরী উত্তর,

নীচে যেমন ইজেজে অন্য কোনও বিবৃতি ব্যবহার করতে পারেন

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

তবে আরও একটি বিষয় আমি জোর দিতে চাই তা হ'ল আপনি যদি কোডটি এইভাবে ব্যবহার করেন,

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

এটি একটি ত্রুটি উত্পাদন করবে।

আশা করি এটি কারও সাহায্য করবে


0

কোড সংক্ষিপ্ত করে আপনি ES6 বৈশিষ্ট্য ব্যবহার করতে পারেন। একই জিনিস হিসাবে লেখা যেতে পারে

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

এবং মন্দির একই হিসাবে রেন্ডার করা যেতে পারে!

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.