无法在EJS中引用对象

时间:2016-11-30 04:33:30

标签: javascript node.js ejs

我有一个对象,我使用EJS传递到我的模板中,我继续收到错误Cannot read property 'link' of undefined,这里是对象,这是模板代码。

我在console.log中找到了对象并得到了这个:

{ _id: 583e4b76f1c8771c17d68ef2,
  username: 'asdf',
  __v: 0,
  favoriteMoments: [],
  favoriteEvents: [],
  likes: [],
  friends: [],
  moments: [],
  categories: [],
  events: 
   [ { _id: 583e4bf8cc11c61c2887aa38,
       title: 'asdfasdf',
       description: 'asdf',
       __v: 0,
       comments: [],
       photos: [Object],
       moments: [],
       category: [Object],
       owner: [Object] } 
] }

以下是模板:

 
        <div class="well event_list_page_event_boxes masonry_box">
            <div class="img-responsive">
               <a href="/event/<%= events._id %>">
                   <% if (events.photos.link === null){%>
                   <div class="event_list_page_event_photo"><p>No Image Here</p></div>
                   <% } else {%>
                   <img class="event_list_page_event_photo" src="<%= events.photos.link %>" border="0" style="max-width: 100%">

                   <% } %>
                   <%}) %>
                    <div class="row">
                        <div class="col-sm-9">
                            <h4 class="event_list_page_event_header"><%= events.title %></h4>
                        </div>
                        <div class="col-sm-3">
                            <p class="event_list_page_event_date"><%= events.date %></p>
                        </div>
                    </div>
                    <p class="event_list_page_event_description"><%= events.description %> </p>
               </a>
            </div>
        </div>

我知道它没有看到events.photos对象,但是我不确定如何让它可见,所以我可以显示我的数据。

1 个答案:

答案 0 :(得分:1)

events是一个数组,而不是这个:

events.photos.link

您需要使用数组索引,例如:

events[0].photos.link

或者,您需要迭代events数组。

如果您尝试为events数组中的每个事件创建新的HTML块,则需要在模板中使用某种循环(例如for循环或.forEach()循环)所以你可以循环遍历数组的每个元素。

本文的“创建模板”部分中有一个for循环的ejs示例:http://www.embeddedjs.com/getting_started.html

相关问题