簡體   English   中英

Node.js - 使用 ejs 的動態列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM