EJS-код для цикла по массиву, содержащему объекты
У меня есть массив items
содержит несколько объектов, каждый из которых имеет 4 свойства (_id
, title
, author
а также content
). Я хочу перебрать каждый объект в массиве и вывести его свойства в файл ejs. Код руля (hbs) ниже, кажется, работает:
{{# each items }}
<article class="item">
<div>Title: {{ this.title }}</div>
<div>Content: {{ this.content }}</div>
<div>Author: {{ this.author }}</div>
<div>ID: {{ this._id }}</div>
</article>
{{/each}}
Каким будет эквивалентный код во встроенном javascript (ejs)?
1 ответ
Решение
Что-то вроде следующего - это тот же код в EJS, что и код Handlebars в исходном вопросе.
<% items.forEach(item => { %>
<article class="item">
<div>Title: <%= item.title %></div>
<div>Content: <%= item.content %></div>
<div>Author: <%= item.author %></div>
<div>ID: <%= item._id %></div>
</article>
<% }); %>
В основном мы делаем JavaScript forEach
петля на items
массив. Затем выводим каждое из свойств элемента, который вы хотите (title
, content
, author
, а также _id
).
Вы также можете сделать то же самое в for
петля.
<% for (let i = 0; i < items.length; i++) { %>
<article class="item">
<div>Title: <%= items[i].title %></div>
<div>Content: <%= items[i].content %></div>
<div>Author: <%= items[i].author %></div>
<div>ID: <%= items[i]._id %></div>
</article>
<% } %>
Теги EJS (взяты с сайта EJS)
<%
Тег 'Scriptlet', для потока управления, без вывода<%_
Тэг Scriptlet 'Whitespace Slurping', удаляет все пробелы перед ним<%=
Выводит значение в шаблон (HTML экранированный)<%-
Выводит неэкранированное значение в шаблон<%#
Тег комментария, без выполнения, без вывода<%%
Выводит литерал '<%'%>
Простой конечный тег-%>
Тег Trim-mode ('newline slurp'), обрезает после новой строки_%>
Конечный тег 'Whitespace Slurping', удаляет все пробелы после него