[英]Node.js - Dynamic list using ejs
我有一個像這樣的數組,例如:
const arr = ['foo', 'bar', 'baz'];
arr
可以有任何長度,我只是以此為例。 我將如何將arr
動態添加到 ejs 上的列表中。
我知道我可以做到這一點
// index.ejs
<!doctype html>
<html>
<body>
<ul>
<li><%= item %></li>
</ul>
</body>
</html>
// app.js
res.render('index', {
item: arr[0]
})
這將僅呈現數組中的第一項。 我將如何使它最終變成這樣:
<html>
<body>
<ul>
<li>foo</li>
<li>bar</li>
<li>baz</li>
</ul>
</body>
</html>
您可以在 ejs 中使用數組的forEach
方法,就像在 JavaScript 中使用它一樣
<ul>
<% arr.forEach((item) => { %>
<li><%= item %></li>
<% }) %>
</ul>
將解決您的問題。
您可能應該添加測試來檢查arr
是否實際存在,以便在沒有數組(數組undefined
)或其長度為零時它不會嘗試遍歷它。 您可能會在某些時候發送undefined
值以供數組查看。
res.render('index', { arr: undefined });
在這種情況下,如果您不執行該檢查,您的視圖將崩潰,因為沒有undefined
forEach
方法。
<% if (arr && arr.length) { %>
<ul>
<% arr.forEach((item) => { %>
<li><%= item %></li>
<% }) %>
</ul>
<% } %>
並且您需要將整個數組傳遞給視圖才能使上述代碼工作。
res.render(index, { arr });
將數組傳遞給視圖
// app.js
res.render('index', {
arr
})
循環它
<ul>
<% for(var i=0; i<arr.length; i++) {%>
<li><%= arr[i] %></li>
<% } %>
</ul>
另一種方法是映射。
//app
res.render('index',{ arr })
地圖
<html>
<body>
<ul>
<%arr.map( item => {%>
<li><%= item%></li>
<%})%>
</ul>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.