#node.js #express #ejs
#node.js #выразить #ejs
Вопрос:
я попытался переключить условие внутри шаблона ejs, но я получил ошибку
вот мой код :
<% switch(check) {%>
<% case check == 'like' : %>
<button href="#<%=item._id%>" id="like" class="recommendation good open-recommendation-form">
<span class="icon-like"></span>
</button>
<button href="#<%=item._id%>" id="dislike" class="recommendation bad hoverable open-recommendation-form">
<span class="icon-dislike"></span>
</button>
<%break%>
<% case check == 'dislike' : %>
<button href="#<%=item._id%>" id="like" class="recommendation good hoverable open-recommendation-form">
<span class="icon-like"></span>
</button>
<button href="#<%=item._id%>" id="dislike" class="recommendation bad open-recommendation-form">
<span class="icon-dislike"></span>
</button>
<%break%>
<% default : %>
<button href="#<%=item._id%>" id="like" class="recommendation good hoverable open-recommendation-form">
<span class="icon-like"></span>
</button>
<button href="#<%=item._id%>" id="dislike" class="recommendation bad hoverable open-recommendation-form">
<span class="icon-dislike"></span>
</button>
<%break%>
<%} %>
и ошибка, которую я получил :
Ошибка синтаксиса: неожиданный токен ‘;’ в /Users/ismail / Desktop / expressjs-пустой /views / dashboard /purchases.ejs при компиляции ejs
If the above error is not helpful, you may want to try EJS-Lint:
https://github.com/RyanZim/EJS-Lint
Or, if you meant to create an async function, pass `async: true` as an option.
at new Function (<anonymous>)
at Template.compile (/Users/ismail/Desktop/expressjs-blank/node_modules/ejs/lib/ejs.js:632:12)
at Object.compile (/Users/ismail/Desktop/expressjs-blank/node_modules/ejs/lib/ejs.js:368:16)
at handleCache (/Users/ismail/Desktop/expressjs-blank/node_modules/ejs/lib/ejs.js:216:18)
at tryHandleCache (/Users/ismail/Desktop/expressjs-blank/node_modules/ejs/lib/ejs.js:255:16)
at View.exports.renderFile [as engine] (/Users/ismail/Desktop/expressjs-blank/node_modules/ejs/lib/ejs.js:461:10)
at View.render (/Users/ismail/Desktop/expressjs-blank/node_modules/express/lib/view.js:135:8)
at tryRender (/Users/ismail/Desktop/expressjs-blank/node_modules/express/lib/application.js:640:10)
at Function.render (/Users/ismail/Desktop/expressjs-blank/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/Users/ismail/Desktop/expressjs-blank/node_modules/express/lib/response.js:1012:7)
Комментарии:
1. Код, которым вы поделились, не связан с ошибкой, которую вы получаете. Символ, упомянутый в ошибке, нигде не присутствует в вашем коде.
Ответ №1:
Изменение switch/case
операторов на следующие должно устранить проблему (упрощенная версия только с одним case
):
<% switch(check) {
case 'like' : %>
<button href="#<%= item._id %>" id="like" class="recommendation good open-recommendation-form">
<span class="icon-like">TEST</span>
</button>
<% break;
}
%>
Рендеринг страницы со следующим, определенно должен работать:
res.render('name-of-ejs-template', {item: {_id: "https://www.stackoverflow.com"}, check: 'like'});
Комментарии:
1. я изменил его на условие if, и оно работает просто идеально
2. Ну, это, конечно, другой способ сделать это. Либо опубликуйте свое решение с помощью операторов if в качестве ответа, примите мой ответ или удалите свой вопрос. Спасибо 🙂
3. @eol можете ли вы, пожалуйста, объяснить, почему ваш ответ работает, а не приведенный выше, написанный автором?