使用EJS中的对象作为对象渲染对象

问题描述 投票:0回答:2

我有一个类似以下的对象,即将传递给ejs模板:

 { 
    course1: { last4: '4242', name: 'Course 1', paid: true },
    course2: { last4: '3155', name: 'Course 2', paid: true },
    course3: { last4: '4242', name: 'Course 3', paid: true } 
}

而且我正像这样通过它:

 res.render("user", {                
        courses: myCourses,               
});

我想在页面内渲染对象,我尝试过类似的事情:


            <% if(courses){  %>
                <%= courses %>
                <% Object.entries(courses).forEach(course =>{ %>

             <p>hello</p>

            <%= course %>


            <% }) %>
            <% }else{ %>
                <p>hello1</p>
                <% }%>

这是结果:object result in browser

这是我期望的:expected result

所以在上一个示例中,您看到我只是得到对象键而不是值。我还如何呈现(或访问)值?谢谢

javascript node.js json object ejs
2个回答
1
投票

Object.entries返回的数组的每个元素是一个[key, value]数组。对于您现有的代码,course[0]是当前键,course[1].last4是当前对象的last4字段,依此类推。

我会像您最初那样,至少在一个层次上对其进行破坏:

<% if (courses) {  %>
    <% for (const [key, course] of Object.entries(courses)) { %>
        <%= key %>
        <%= course.last4 %>
        <%= course.name %>
        <%= course.paid %>
    <% } %>
<% } else { %>
    <p>hello1</p>
<% } %>

0
投票

将数据对象更改为此:

myCourse = [
  { last4: '4242', name: 'Course 1', paid: true },
  { last4: '3155', name: 'Course 2', paid: true },
  { last4: '4242', name: 'Course 3', paid: true }
]

然后您的代码将如下所示:

<% if(courses){  %>
   <% courses.forEach(course =>{ %>
        <%= JSON.stringify(course) %>
        <!-- or -->
        <%= course.name%> <%= course.last4 %> <%= course.paid %>
        <br/>

   <% }); %>
<% } %>
© www.soinside.com 2019 - 2024. All rights reserved.