【问题标题】:render Object with Object as value in EJS在 EJS 中以 Object 作为值渲染对象
【发布时间】:2020-04-30 13:14:43
【问题描述】:

我有一个像下面这样的对象,我正在传递给 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>
                <% }%>

这是结果:

这是我所期望的:

所以在最后一个示例中,您会看到我只获取对象键而不是值。 我怎样才能呈现(或访问)这些值? 谢谢

【问题讨论】:

  • 我们并没有真正看到。你能显示它呈现的 HTML,以及你希望它呈现的内容吗? (您需要从不使用逗号运算符开始 - 或者它可能充当 EJS 中的参数分隔符,为您提供第一个值而不是最后一个值 - 所以 &lt;%= course %&gt;, &lt;%= name %&gt;, …,但除此之外,不清楚你想要。)
  • @Ry- 好的,刚刚做了。
  • 感谢您添加当前结果。你希望它看起来像什么? (例如,手动编辑 HTML 以显示)
  • @Ry- 添加了预期的结果图像,请注意我仍然会更改一点 html,我只想要键和所有值。

标签: javascript node.js json object ejs


【解决方案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>
<% } %>

【讨论】:

    猜你喜欢
    • 2021-07-24
    • 2019-01-20
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2015-10-31
    • 2018-11-22
    • 2016-09-14
    • 2012-05-08
    相关资源
    最近更新 更多